package lco.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import lco.services.CRLanguageGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalCRLanguageParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_FLOAT", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'array'", "'('", "','", "')'", "'calcCR'", "'calcMean'", "'highestCR'", "'findSimilar'", "'.size'", "'.add'", "'.delete'", "'['", "']'", "'Real'", "'Int'", "'Partition'", "'print'", "'for'", "';'", "'=='", "'<'", "'>'", "'<='", "'>='", "'!='", "'+='", "'-='", "'{'", "'}'", "'forall'", "'file'", "':'"
    };
    public static final int RULE_ID=6;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=11;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=4;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__44=44;
    public static final int RULE_FLOAT=5;
    public static final int RULE_SL_COMMENT=9;
    public static final int RULE_ML_COMMENT=8;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int RULE_STRING=7;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=10;

    // delegates
    // delegators


        public InternalCRLanguageParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalCRLanguageParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalCRLanguageParser.tokenNames; }
    public String getGrammarFileName() { return "../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g"; }



     	private CRLanguageGrammarAccess grammarAccess;
     	
        public InternalCRLanguageParser(TokenStream input, CRLanguageGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Program";	
       	}
       	
       	@Override
       	protected CRLanguageGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleProgram"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:67:1: entryRuleProgram returns [EObject current=null] : iv_ruleProgram= ruleProgram EOF ;
    public final EObject entryRuleProgram() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProgram = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:68:2: (iv_ruleProgram= ruleProgram EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:69:2: iv_ruleProgram= ruleProgram EOF
            {
             newCompositeNode(grammarAccess.getProgramRule()); 
            pushFollow(FOLLOW_ruleProgram_in_entryRuleProgram75);
            iv_ruleProgram=ruleProgram();

            state._fsp--;

             current =iv_ruleProgram; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProgram85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProgram"


    // $ANTLR start "ruleProgram"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:76:1: ruleProgram returns [EObject current=null] : ( ( (lv_declarations_0_0= ruleDeclaration ) )* ( (lv_statements_1_0= ruleStatement ) )* ) ;
    public final EObject ruleProgram() throws RecognitionException {
        EObject current = null;

        EObject lv_declarations_0_0 = null;

        EObject lv_statements_1_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:79:28: ( ( ( (lv_declarations_0_0= ruleDeclaration ) )* ( (lv_statements_1_0= ruleStatement ) )* ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:80:1: ( ( (lv_declarations_0_0= ruleDeclaration ) )* ( (lv_statements_1_0= ruleStatement ) )* )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:80:1: ( ( (lv_declarations_0_0= ruleDeclaration ) )* ( (lv_statements_1_0= ruleStatement ) )* )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:80:2: ( (lv_declarations_0_0= ruleDeclaration ) )* ( (lv_statements_1_0= ruleStatement ) )*
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:80:2: ( (lv_declarations_0_0= ruleDeclaration ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==13||(LA1_0>=26 && LA1_0<=28)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:81:1: (lv_declarations_0_0= ruleDeclaration )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:81:1: (lv_declarations_0_0= ruleDeclaration )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:82:3: lv_declarations_0_0= ruleDeclaration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getProgramAccess().getDeclarationsDeclarationParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleDeclaration_in_ruleProgram131);
            	    lv_declarations_0_0=ruleDeclaration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getProgramRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"declarations",
            	            		lv_declarations_0_0, 
            	            		"Declaration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:98:3: ( (lv_statements_1_0= ruleStatement ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==RULE_ID||(LA2_0>=17 && LA2_0<=20)||(LA2_0>=29 && LA2_0<=30)||LA2_0==42) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:99:1: (lv_statements_1_0= ruleStatement )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:99:1: (lv_statements_1_0= ruleStatement )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:100:3: lv_statements_1_0= ruleStatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getProgramAccess().getStatementsStatementParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStatement_in_ruleProgram153);
            	    lv_statements_1_0=ruleStatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getProgramRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_1_0, 
            	            		"Statement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProgram"


    // $ANTLR start "entryRuleStatement"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:124:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
    public final EObject entryRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatement = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:125:2: (iv_ruleStatement= ruleStatement EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:126:2: iv_ruleStatement= ruleStatement EOF
            {
             newCompositeNode(grammarAccess.getStatementRule()); 
            pushFollow(FOLLOW_ruleStatement_in_entryRuleStatement190);
            iv_ruleStatement=ruleStatement();

            state._fsp--;

             current =iv_ruleStatement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStatement200); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStatement"


    // $ANTLR start "ruleStatement"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:133:1: ruleStatement returns [EObject current=null] : ( ( (lv_a_0_0= ruleAssignment ) ) | ( (lv_c_1_0= ruleCallable ) ) | ( (lv_p_2_0= rulePrint ) ) | ( (lv_f_3_0= ruleFor ) ) ) ;
    public final EObject ruleStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_a_0_0 = null;

        EObject lv_c_1_0 = null;

        EObject lv_p_2_0 = null;

        EObject lv_f_3_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:136:28: ( ( ( (lv_a_0_0= ruleAssignment ) ) | ( (lv_c_1_0= ruleCallable ) ) | ( (lv_p_2_0= rulePrint ) ) | ( (lv_f_3_0= ruleFor ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:137:1: ( ( (lv_a_0_0= ruleAssignment ) ) | ( (lv_c_1_0= ruleCallable ) ) | ( (lv_p_2_0= rulePrint ) ) | ( (lv_f_3_0= ruleFor ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:137:1: ( ( (lv_a_0_0= ruleAssignment ) ) | ( (lv_c_1_0= ruleCallable ) ) | ( (lv_p_2_0= rulePrint ) ) | ( (lv_f_3_0= ruleFor ) ) )
            int alt3=4;
            alt3 = dfa3.predict(input);
            switch (alt3) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:137:2: ( (lv_a_0_0= ruleAssignment ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:137:2: ( (lv_a_0_0= ruleAssignment ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:138:1: (lv_a_0_0= ruleAssignment )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:138:1: (lv_a_0_0= ruleAssignment )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:139:3: lv_a_0_0= ruleAssignment
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getAAssignmentParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAssignment_in_ruleStatement246);
                    lv_a_0_0=ruleAssignment();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"a",
                            		lv_a_0_0, 
                            		"Assignment");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:156:6: ( (lv_c_1_0= ruleCallable ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:156:6: ( (lv_c_1_0= ruleCallable ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:157:1: (lv_c_1_0= ruleCallable )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:157:1: (lv_c_1_0= ruleCallable )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:158:3: lv_c_1_0= ruleCallable
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getCCallableParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCallable_in_ruleStatement273);
                    lv_c_1_0=ruleCallable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"c",
                            		lv_c_1_0, 
                            		"Callable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:175:6: ( (lv_p_2_0= rulePrint ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:175:6: ( (lv_p_2_0= rulePrint ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:176:1: (lv_p_2_0= rulePrint )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:176:1: (lv_p_2_0= rulePrint )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:177:3: lv_p_2_0= rulePrint
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getPPrintParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_rulePrint_in_ruleStatement300);
                    lv_p_2_0=rulePrint();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"p",
                            		lv_p_2_0, 
                            		"Print");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:194:6: ( (lv_f_3_0= ruleFor ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:194:6: ( (lv_f_3_0= ruleFor ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:195:1: (lv_f_3_0= ruleFor )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:195:1: (lv_f_3_0= ruleFor )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:196:3: lv_f_3_0= ruleFor
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getFForParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFor_in_ruleStatement327);
                    lv_f_3_0=ruleFor();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"f",
                            		lv_f_3_0, 
                            		"For");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStatement"


    // $ANTLR start "entryRuleAssignmentRightHand"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:220:1: entryRuleAssignmentRightHand returns [EObject current=null] : iv_ruleAssignmentRightHand= ruleAssignmentRightHand EOF ;
    public final EObject entryRuleAssignmentRightHand() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignmentRightHand = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:221:2: (iv_ruleAssignmentRightHand= ruleAssignmentRightHand EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:222:2: iv_ruleAssignmentRightHand= ruleAssignmentRightHand EOF
            {
             newCompositeNode(grammarAccess.getAssignmentRightHandRule()); 
            pushFollow(FOLLOW_ruleAssignmentRightHand_in_entryRuleAssignmentRightHand363);
            iv_ruleAssignmentRightHand=ruleAssignmentRightHand();

            state._fsp--;

             current =iv_ruleAssignmentRightHand; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssignmentRightHand373); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignmentRightHand"


    // $ANTLR start "ruleAssignmentRightHand"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:229:1: ruleAssignmentRightHand returns [EObject current=null] : ( ( (lv_integer_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_file_2_0= ruleFile ) ) | ( (otherlv_3= RULE_ID ) ) | ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) ) | ( (lv_callable_5_0= ruleCallable ) ) ) ;
    public final EObject ruleAssignmentRightHand() throws RecognitionException {
        EObject current = null;

        Token lv_integer_0_0=null;
        Token lv_double_1_0=null;
        Token otherlv_3=null;
        EObject lv_file_2_0 = null;

        EObject lv_indexedVectorial_4_0 = null;

        EObject lv_callable_5_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:232:28: ( ( ( (lv_integer_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_file_2_0= ruleFile ) ) | ( (otherlv_3= RULE_ID ) ) | ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) ) | ( (lv_callable_5_0= ruleCallable ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:233:1: ( ( (lv_integer_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_file_2_0= ruleFile ) ) | ( (otherlv_3= RULE_ID ) ) | ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) ) | ( (lv_callable_5_0= ruleCallable ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:233:1: ( ( (lv_integer_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_file_2_0= ruleFile ) ) | ( (otherlv_3= RULE_ID ) ) | ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) ) | ( (lv_callable_5_0= ruleCallable ) ) )
            int alt4=6;
            alt4 = dfa4.predict(input);
            switch (alt4) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:233:2: ( (lv_integer_0_0= RULE_INT ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:233:2: ( (lv_integer_0_0= RULE_INT ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:234:1: (lv_integer_0_0= RULE_INT )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:234:1: (lv_integer_0_0= RULE_INT )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:235:3: lv_integer_0_0= RULE_INT
                    {
                    lv_integer_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleAssignmentRightHand415); 

                    			newLeafNode(lv_integer_0_0, grammarAccess.getAssignmentRightHandAccess().getIntegerINTTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssignmentRightHandRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"integer",
                            		lv_integer_0_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:252:6: ( (lv_double_1_0= RULE_FLOAT ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:252:6: ( (lv_double_1_0= RULE_FLOAT ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:253:1: (lv_double_1_0= RULE_FLOAT )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:253:1: (lv_double_1_0= RULE_FLOAT )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:254:3: lv_double_1_0= RULE_FLOAT
                    {
                    lv_double_1_0=(Token)match(input,RULE_FLOAT,FOLLOW_RULE_FLOAT_in_ruleAssignmentRightHand443); 

                    			newLeafNode(lv_double_1_0, grammarAccess.getAssignmentRightHandAccess().getDoubleFLOATTerminalRuleCall_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssignmentRightHandRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"double",
                            		lv_double_1_0, 
                            		"FLOAT");
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:271:6: ( (lv_file_2_0= ruleFile ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:271:6: ( (lv_file_2_0= ruleFile ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:272:1: (lv_file_2_0= ruleFile )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:272:1: (lv_file_2_0= ruleFile )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:273:3: lv_file_2_0= ruleFile
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentRightHandAccess().getFileFileParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFile_in_ruleAssignmentRightHand475);
                    lv_file_2_0=ruleFile();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRightHandRule());
                    	        }
                           		set(
                           			current, 
                           			"file",
                            		lv_file_2_0, 
                            		"File");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:290:6: ( (otherlv_3= RULE_ID ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:290:6: ( (otherlv_3= RULE_ID ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:291:1: (otherlv_3= RULE_ID )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:291:1: (otherlv_3= RULE_ID )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:292:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssignmentRightHandRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssignmentRightHand501); 

                    		newLeafNode(otherlv_3, grammarAccess.getAssignmentRightHandAccess().getVariableVariableCrossReference_3_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 5 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:304:6: ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:304:6: ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:305:1: (lv_indexedVectorial_4_0= ruleIndexedVectorial )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:305:1: (lv_indexedVectorial_4_0= ruleIndexedVectorial )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:306:3: lv_indexedVectorial_4_0= ruleIndexedVectorial
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentRightHandAccess().getIndexedVectorialIndexedVectorialParserRuleCall_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleIndexedVectorial_in_ruleAssignmentRightHand528);
                    lv_indexedVectorial_4_0=ruleIndexedVectorial();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRightHandRule());
                    	        }
                           		set(
                           			current, 
                           			"indexedVectorial",
                            		lv_indexedVectorial_4_0, 
                            		"IndexedVectorial");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 6 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:323:6: ( (lv_callable_5_0= ruleCallable ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:323:6: ( (lv_callable_5_0= ruleCallable ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:324:1: (lv_callable_5_0= ruleCallable )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:324:1: (lv_callable_5_0= ruleCallable )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:325:3: lv_callable_5_0= ruleCallable
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentRightHandAccess().getCallableCallableParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCallable_in_ruleAssignmentRightHand555);
                    lv_callable_5_0=ruleCallable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRightHandRule());
                    	        }
                           		set(
                           			current, 
                           			"callable",
                            		lv_callable_5_0, 
                            		"Callable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignmentRightHand"


    // $ANTLR start "entryRuleDeclaration"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:349:1: entryRuleDeclaration returns [EObject current=null] : iv_ruleDeclaration= ruleDeclaration EOF ;
    public final EObject entryRuleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDeclaration = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:350:2: (iv_ruleDeclaration= ruleDeclaration EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:351:2: iv_ruleDeclaration= ruleDeclaration EOF
            {
             newCompositeNode(grammarAccess.getDeclarationRule()); 
            pushFollow(FOLLOW_ruleDeclaration_in_entryRuleDeclaration591);
            iv_ruleDeclaration=ruleDeclaration();

            state._fsp--;

             current =iv_ruleDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDeclaration601); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDeclaration"


    // $ANTLR start "ruleDeclaration"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:358:1: ruleDeclaration returns [EObject current=null] : ( ( (lv_sd_0_0= ruleScalarDeclaration ) ) | ( (lv_vd_1_0= ruleVectorialDeclaration ) ) ) ;
    public final EObject ruleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject lv_sd_0_0 = null;

        EObject lv_vd_1_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:361:28: ( ( ( (lv_sd_0_0= ruleScalarDeclaration ) ) | ( (lv_vd_1_0= ruleVectorialDeclaration ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:362:1: ( ( (lv_sd_0_0= ruleScalarDeclaration ) ) | ( (lv_vd_1_0= ruleVectorialDeclaration ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:362:1: ( ( (lv_sd_0_0= ruleScalarDeclaration ) ) | ( (lv_vd_1_0= ruleVectorialDeclaration ) ) )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( ((LA5_0>=26 && LA5_0<=28)) ) {
                alt5=1;
            }
            else if ( (LA5_0==13) ) {
                alt5=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }
            switch (alt5) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:362:2: ( (lv_sd_0_0= ruleScalarDeclaration ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:362:2: ( (lv_sd_0_0= ruleScalarDeclaration ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:363:1: (lv_sd_0_0= ruleScalarDeclaration )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:363:1: (lv_sd_0_0= ruleScalarDeclaration )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:364:3: lv_sd_0_0= ruleScalarDeclaration
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeclarationAccess().getSdScalarDeclarationParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleScalarDeclaration_in_ruleDeclaration647);
                    lv_sd_0_0=ruleScalarDeclaration();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeclarationRule());
                    	        }
                           		set(
                           			current, 
                           			"sd",
                            		lv_sd_0_0, 
                            		"ScalarDeclaration");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:381:6: ( (lv_vd_1_0= ruleVectorialDeclaration ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:381:6: ( (lv_vd_1_0= ruleVectorialDeclaration ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:382:1: (lv_vd_1_0= ruleVectorialDeclaration )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:382:1: (lv_vd_1_0= ruleVectorialDeclaration )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:383:3: lv_vd_1_0= ruleVectorialDeclaration
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeclarationAccess().getVdVectorialDeclarationParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleVectorialDeclaration_in_ruleDeclaration674);
                    lv_vd_1_0=ruleVectorialDeclaration();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeclarationRule());
                    	        }
                           		set(
                           			current, 
                           			"vd",
                            		lv_vd_1_0, 
                            		"VectorialDeclaration");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDeclaration"


    // $ANTLR start "entryRuleScalarDeclaration"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:407:1: entryRuleScalarDeclaration returns [EObject current=null] : iv_ruleScalarDeclaration= ruleScalarDeclaration EOF ;
    public final EObject entryRuleScalarDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScalarDeclaration = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:408:2: (iv_ruleScalarDeclaration= ruleScalarDeclaration EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:409:2: iv_ruleScalarDeclaration= ruleScalarDeclaration EOF
            {
             newCompositeNode(grammarAccess.getScalarDeclarationRule()); 
            pushFollow(FOLLOW_ruleScalarDeclaration_in_entryRuleScalarDeclaration710);
            iv_ruleScalarDeclaration=ruleScalarDeclaration();

            state._fsp--;

             current =iv_ruleScalarDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScalarDeclaration720); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleScalarDeclaration"


    // $ANTLR start "ruleScalarDeclaration"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:416:1: ruleScalarDeclaration returns [EObject current=null] : ( ( (lv_type_0_0= ruleType ) ) ( (lv_variable_1_0= ruleScalarVariable ) ) (otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) ) )? ) ;
    public final EObject ruleScalarDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_type_0_0 = null;

        EObject lv_variable_1_0 = null;

        EObject lv_expr_3_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:419:28: ( ( ( (lv_type_0_0= ruleType ) ) ( (lv_variable_1_0= ruleScalarVariable ) ) (otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) ) )? ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:420:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_variable_1_0= ruleScalarVariable ) ) (otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) ) )? )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:420:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_variable_1_0= ruleScalarVariable ) ) (otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) ) )? )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:420:2: ( (lv_type_0_0= ruleType ) ) ( (lv_variable_1_0= ruleScalarVariable ) ) (otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) ) )?
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:420:2: ( (lv_type_0_0= ruleType ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:421:1: (lv_type_0_0= ruleType )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:421:1: (lv_type_0_0= ruleType )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:422:3: lv_type_0_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getScalarDeclarationAccess().getTypeTypeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleScalarDeclaration766);
            lv_type_0_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getScalarDeclarationRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_0_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:438:2: ( (lv_variable_1_0= ruleScalarVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:439:1: (lv_variable_1_0= ruleScalarVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:439:1: (lv_variable_1_0= ruleScalarVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:440:3: lv_variable_1_0= ruleScalarVariable
            {
             
            	        newCompositeNode(grammarAccess.getScalarDeclarationAccess().getVariableScalarVariableParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleScalarVariable_in_ruleScalarDeclaration787);
            lv_variable_1_0=ruleScalarVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getScalarDeclarationRule());
            	        }
                   		set(
                   			current, 
                   			"variable",
                    		lv_variable_1_0, 
                    		"ScalarVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:456:2: (otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==12) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:456:4: otherlv_2= '=' ( (lv_expr_3_0= ruleAssignmentRightHand ) )
                    {
                    otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleScalarDeclaration800); 

                        	newLeafNode(otherlv_2, grammarAccess.getScalarDeclarationAccess().getEqualsSignKeyword_2_0());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:460:1: ( (lv_expr_3_0= ruleAssignmentRightHand ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:461:1: (lv_expr_3_0= ruleAssignmentRightHand )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:461:1: (lv_expr_3_0= ruleAssignmentRightHand )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:462:3: lv_expr_3_0= ruleAssignmentRightHand
                    {
                     
                    	        newCompositeNode(grammarAccess.getScalarDeclarationAccess().getExprAssignmentRightHandParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAssignmentRightHand_in_ruleScalarDeclaration821);
                    lv_expr_3_0=ruleAssignmentRightHand();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getScalarDeclarationRule());
                    	        }
                           		set(
                           			current, 
                           			"expr",
                            		lv_expr_3_0, 
                            		"AssignmentRightHand");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScalarDeclaration"


    // $ANTLR start "entryRuleVectorialDeclaration"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:486:1: entryRuleVectorialDeclaration returns [EObject current=null] : iv_ruleVectorialDeclaration= ruleVectorialDeclaration EOF ;
    public final EObject entryRuleVectorialDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVectorialDeclaration = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:487:2: (iv_ruleVectorialDeclaration= ruleVectorialDeclaration EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:488:2: iv_ruleVectorialDeclaration= ruleVectorialDeclaration EOF
            {
             newCompositeNode(grammarAccess.getVectorialDeclarationRule()); 
            pushFollow(FOLLOW_ruleVectorialDeclaration_in_entryRuleVectorialDeclaration859);
            iv_ruleVectorialDeclaration=ruleVectorialDeclaration();

            state._fsp--;

             current =iv_ruleVectorialDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVectorialDeclaration869); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVectorialDeclaration"


    // $ANTLR start "ruleVectorialDeclaration"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:495:1: ruleVectorialDeclaration returns [EObject current=null] : (otherlv_0= 'array' otherlv_1= '(' ( (lv_x_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) ) )? otherlv_5= ')' ( (lv_type_6_0= ruleType ) ) ( (lv_variable_7_0= ruleVectorialVariable ) ) ) ;
    public final EObject ruleVectorialDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_x_2_0=null;
        Token otherlv_3=null;
        Token lv_y_4_0=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_type_6_0 = null;

        EObject lv_variable_7_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:498:28: ( (otherlv_0= 'array' otherlv_1= '(' ( (lv_x_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) ) )? otherlv_5= ')' ( (lv_type_6_0= ruleType ) ) ( (lv_variable_7_0= ruleVectorialVariable ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:499:1: (otherlv_0= 'array' otherlv_1= '(' ( (lv_x_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) ) )? otherlv_5= ')' ( (lv_type_6_0= ruleType ) ) ( (lv_variable_7_0= ruleVectorialVariable ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:499:1: (otherlv_0= 'array' otherlv_1= '(' ( (lv_x_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) ) )? otherlv_5= ')' ( (lv_type_6_0= ruleType ) ) ( (lv_variable_7_0= ruleVectorialVariable ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:499:3: otherlv_0= 'array' otherlv_1= '(' ( (lv_x_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) ) )? otherlv_5= ')' ( (lv_type_6_0= ruleType ) ) ( (lv_variable_7_0= ruleVectorialVariable ) )
            {
            otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleVectorialDeclaration906); 

                	newLeafNode(otherlv_0, grammarAccess.getVectorialDeclarationAccess().getArrayKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleVectorialDeclaration918); 

                	newLeafNode(otherlv_1, grammarAccess.getVectorialDeclarationAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:507:1: ( (lv_x_2_0= RULE_INT ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:508:1: (lv_x_2_0= RULE_INT )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:508:1: (lv_x_2_0= RULE_INT )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:509:3: lv_x_2_0= RULE_INT
            {
            lv_x_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleVectorialDeclaration935); 

            			newLeafNode(lv_x_2_0, grammarAccess.getVectorialDeclarationAccess().getXINTTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getVectorialDeclarationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"x",
                    		lv_x_2_0, 
                    		"INT");
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:525:2: (otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==15) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:525:4: otherlv_3= ',' ( (lv_y_4_0= RULE_INT ) )
                    {
                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleVectorialDeclaration953); 

                        	newLeafNode(otherlv_3, grammarAccess.getVectorialDeclarationAccess().getCommaKeyword_3_0());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:529:1: ( (lv_y_4_0= RULE_INT ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:530:1: (lv_y_4_0= RULE_INT )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:530:1: (lv_y_4_0= RULE_INT )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:531:3: lv_y_4_0= RULE_INT
                    {
                    lv_y_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleVectorialDeclaration970); 

                    			newLeafNode(lv_y_4_0, grammarAccess.getVectorialDeclarationAccess().getYINTTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getVectorialDeclarationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"y",
                            		lv_y_4_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,16,FOLLOW_16_in_ruleVectorialDeclaration989); 

                	newLeafNode(otherlv_5, grammarAccess.getVectorialDeclarationAccess().getRightParenthesisKeyword_4());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:551:1: ( (lv_type_6_0= ruleType ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:552:1: (lv_type_6_0= ruleType )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:552:1: (lv_type_6_0= ruleType )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:553:3: lv_type_6_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getVectorialDeclarationAccess().getTypeTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleVectorialDeclaration1010);
            lv_type_6_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVectorialDeclarationRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_6_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:569:2: ( (lv_variable_7_0= ruleVectorialVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:570:1: (lv_variable_7_0= ruleVectorialVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:570:1: (lv_variable_7_0= ruleVectorialVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:571:3: lv_variable_7_0= ruleVectorialVariable
            {
             
            	        newCompositeNode(grammarAccess.getVectorialDeclarationAccess().getVariableVectorialVariableParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleVectorialVariable_in_ruleVectorialDeclaration1031);
            lv_variable_7_0=ruleVectorialVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVectorialDeclarationRule());
            	        }
                   		set(
                   			current, 
                   			"variable",
                    		lv_variable_7_0, 
                    		"VectorialVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVectorialDeclaration"


    // $ANTLR start "entryRuleAssignment"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:595:1: entryRuleAssignment returns [EObject current=null] : iv_ruleAssignment= ruleAssignment EOF ;
    public final EObject entryRuleAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignment = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:596:2: (iv_ruleAssignment= ruleAssignment EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:597:2: iv_ruleAssignment= ruleAssignment EOF
            {
             newCompositeNode(grammarAccess.getAssignmentRule()); 
            pushFollow(FOLLOW_ruleAssignment_in_entryRuleAssignment1067);
            iv_ruleAssignment=ruleAssignment();

            state._fsp--;

             current =iv_ruleAssignment; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssignment1077); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignment"


    // $ANTLR start "ruleAssignment"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:604:1: ruleAssignment returns [EObject current=null] : ( ( (lv_sa_0_0= ruleScalarAssign ) ) | ( (lv_va_1_0= ruleVectorialAssign ) ) ) ;
    public final EObject ruleAssignment() throws RecognitionException {
        EObject current = null;

        EObject lv_sa_0_0 = null;

        EObject lv_va_1_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:607:28: ( ( ( (lv_sa_0_0= ruleScalarAssign ) ) | ( (lv_va_1_0= ruleVectorialAssign ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:608:1: ( ( (lv_sa_0_0= ruleScalarAssign ) ) | ( (lv_va_1_0= ruleVectorialAssign ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:608:1: ( ( (lv_sa_0_0= ruleScalarAssign ) ) | ( (lv_va_1_0= ruleVectorialAssign ) ) )
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==RULE_ID) ) {
                int LA8_1 = input.LA(2);

                if ( (LA8_1==24) ) {
                    alt8=2;
                }
                else if ( (LA8_1==12) ) {
                    alt8=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 8, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;
            }
            switch (alt8) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:608:2: ( (lv_sa_0_0= ruleScalarAssign ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:608:2: ( (lv_sa_0_0= ruleScalarAssign ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:609:1: (lv_sa_0_0= ruleScalarAssign )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:609:1: (lv_sa_0_0= ruleScalarAssign )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:610:3: lv_sa_0_0= ruleScalarAssign
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getSaScalarAssignParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleScalarAssign_in_ruleAssignment1123);
                    lv_sa_0_0=ruleScalarAssign();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"sa",
                            		lv_sa_0_0, 
                            		"ScalarAssign");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:627:6: ( (lv_va_1_0= ruleVectorialAssign ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:627:6: ( (lv_va_1_0= ruleVectorialAssign ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:628:1: (lv_va_1_0= ruleVectorialAssign )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:628:1: (lv_va_1_0= ruleVectorialAssign )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:629:3: lv_va_1_0= ruleVectorialAssign
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getVaVectorialAssignParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleVectorialAssign_in_ruleAssignment1150);
                    lv_va_1_0=ruleVectorialAssign();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"va",
                            		lv_va_1_0, 
                            		"VectorialAssign");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignment"


    // $ANTLR start "entryRuleScalarAssign"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:653:1: entryRuleScalarAssign returns [EObject current=null] : iv_ruleScalarAssign= ruleScalarAssign EOF ;
    public final EObject entryRuleScalarAssign() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScalarAssign = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:654:2: (iv_ruleScalarAssign= ruleScalarAssign EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:655:2: iv_ruleScalarAssign= ruleScalarAssign EOF
            {
             newCompositeNode(grammarAccess.getScalarAssignRule()); 
            pushFollow(FOLLOW_ruleScalarAssign_in_entryRuleScalarAssign1186);
            iv_ruleScalarAssign=ruleScalarAssign();

            state._fsp--;

             current =iv_ruleScalarAssign; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScalarAssign1196); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleScalarAssign"


    // $ANTLR start "ruleScalarAssign"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:662:1: ruleScalarAssign returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) ) ;
    public final EObject ruleScalarAssign() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_expr_2_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:665:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:666:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:666:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:666:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:666:2: ( (otherlv_0= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:667:1: (otherlv_0= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:667:1: (otherlv_0= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:668:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getScalarAssignRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleScalarAssign1241); 

            		newLeafNode(otherlv_0, grammarAccess.getScalarAssignAccess().getVarVariableCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,12,FOLLOW_12_in_ruleScalarAssign1253); 

                	newLeafNode(otherlv_1, grammarAccess.getScalarAssignAccess().getEqualsSignKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:683:1: ( (lv_expr_2_0= ruleAssignmentRightHand ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:684:1: (lv_expr_2_0= ruleAssignmentRightHand )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:684:1: (lv_expr_2_0= ruleAssignmentRightHand )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:685:3: lv_expr_2_0= ruleAssignmentRightHand
            {
             
            	        newCompositeNode(grammarAccess.getScalarAssignAccess().getExprAssignmentRightHandParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleAssignmentRightHand_in_ruleScalarAssign1274);
            lv_expr_2_0=ruleAssignmentRightHand();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getScalarAssignRule());
            	        }
                   		set(
                   			current, 
                   			"expr",
                    		lv_expr_2_0, 
                    		"AssignmentRightHand");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScalarAssign"


    // $ANTLR start "entryRuleVectorialAssign"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:709:1: entryRuleVectorialAssign returns [EObject current=null] : iv_ruleVectorialAssign= ruleVectorialAssign EOF ;
    public final EObject entryRuleVectorialAssign() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVectorialAssign = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:710:2: (iv_ruleVectorialAssign= ruleVectorialAssign EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:711:2: iv_ruleVectorialAssign= ruleVectorialAssign EOF
            {
             newCompositeNode(grammarAccess.getVectorialAssignRule()); 
            pushFollow(FOLLOW_ruleVectorialAssign_in_entryRuleVectorialAssign1310);
            iv_ruleVectorialAssign=ruleVectorialAssign();

            state._fsp--;

             current =iv_ruleVectorialAssign; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVectorialAssign1320); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVectorialAssign"


    // $ANTLR start "ruleVectorialAssign"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:718:1: ruleVectorialAssign returns [EObject current=null] : ( ( (lv_var_0_0= ruleIndexedVectorial ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) ) ;
    public final EObject ruleVectorialAssign() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_var_0_0 = null;

        EObject lv_expr_2_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:721:28: ( ( ( (lv_var_0_0= ruleIndexedVectorial ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:722:1: ( ( (lv_var_0_0= ruleIndexedVectorial ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:722:1: ( ( (lv_var_0_0= ruleIndexedVectorial ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:722:2: ( (lv_var_0_0= ruleIndexedVectorial ) ) otherlv_1= '=' ( (lv_expr_2_0= ruleAssignmentRightHand ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:722:2: ( (lv_var_0_0= ruleIndexedVectorial ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:723:1: (lv_var_0_0= ruleIndexedVectorial )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:723:1: (lv_var_0_0= ruleIndexedVectorial )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:724:3: lv_var_0_0= ruleIndexedVectorial
            {
             
            	        newCompositeNode(grammarAccess.getVectorialAssignAccess().getVarIndexedVectorialParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVectorial_in_ruleVectorialAssign1366);
            lv_var_0_0=ruleIndexedVectorial();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVectorialAssignRule());
            	        }
                   		set(
                   			current, 
                   			"var",
                    		lv_var_0_0, 
                    		"IndexedVectorial");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,12,FOLLOW_12_in_ruleVectorialAssign1378); 

                	newLeafNode(otherlv_1, grammarAccess.getVectorialAssignAccess().getEqualsSignKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:744:1: ( (lv_expr_2_0= ruleAssignmentRightHand ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:745:1: (lv_expr_2_0= ruleAssignmentRightHand )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:745:1: (lv_expr_2_0= ruleAssignmentRightHand )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:746:3: lv_expr_2_0= ruleAssignmentRightHand
            {
             
            	        newCompositeNode(grammarAccess.getVectorialAssignAccess().getExprAssignmentRightHandParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleAssignmentRightHand_in_ruleVectorialAssign1399);
            lv_expr_2_0=ruleAssignmentRightHand();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVectorialAssignRule());
            	        }
                   		set(
                   			current, 
                   			"expr",
                    		lv_expr_2_0, 
                    		"AssignmentRightHand");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVectorialAssign"


    // $ANTLR start "entryRuleCallable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:770:1: entryRuleCallable returns [EObject current=null] : iv_ruleCallable= ruleCallable EOF ;
    public final EObject entryRuleCallable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCallable = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:771:2: (iv_ruleCallable= ruleCallable EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:772:2: iv_ruleCallable= ruleCallable EOF
            {
             newCompositeNode(grammarAccess.getCallableRule()); 
            pushFollow(FOLLOW_ruleCallable_in_entryRuleCallable1435);
            iv_ruleCallable=ruleCallable();

            state._fsp--;

             current =iv_ruleCallable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCallable1445); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCallable"


    // $ANTLR start "ruleCallable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:779:1: ruleCallable returns [EObject current=null] : ( ( (lv_cr_0_0= ruleCalcCR ) ) | ( (lv_mean_1_0= ruleCalcMean ) ) | ( (lv_highest_2_0= ruleHighestCR ) ) | ( (lv_similar_3_0= ruleFindSimilar ) ) | ( (lv_method_4_0= ruleMethod ) ) ) ;
    public final EObject ruleCallable() throws RecognitionException {
        EObject current = null;

        EObject lv_cr_0_0 = null;

        EObject lv_mean_1_0 = null;

        EObject lv_highest_2_0 = null;

        EObject lv_similar_3_0 = null;

        EObject lv_method_4_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:782:28: ( ( ( (lv_cr_0_0= ruleCalcCR ) ) | ( (lv_mean_1_0= ruleCalcMean ) ) | ( (lv_highest_2_0= ruleHighestCR ) ) | ( (lv_similar_3_0= ruleFindSimilar ) ) | ( (lv_method_4_0= ruleMethod ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:783:1: ( ( (lv_cr_0_0= ruleCalcCR ) ) | ( (lv_mean_1_0= ruleCalcMean ) ) | ( (lv_highest_2_0= ruleHighestCR ) ) | ( (lv_similar_3_0= ruleFindSimilar ) ) | ( (lv_method_4_0= ruleMethod ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:783:1: ( ( (lv_cr_0_0= ruleCalcCR ) ) | ( (lv_mean_1_0= ruleCalcMean ) ) | ( (lv_highest_2_0= ruleHighestCR ) ) | ( (lv_similar_3_0= ruleFindSimilar ) ) | ( (lv_method_4_0= ruleMethod ) ) )
            int alt9=5;
            switch ( input.LA(1) ) {
            case 17:
                {
                alt9=1;
                }
                break;
            case 18:
                {
                alt9=2;
                }
                break;
            case 19:
                {
                alt9=3;
                }
                break;
            case 20:
                {
                alt9=4;
                }
                break;
            case RULE_ID:
                {
                alt9=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:783:2: ( (lv_cr_0_0= ruleCalcCR ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:783:2: ( (lv_cr_0_0= ruleCalcCR ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:784:1: (lv_cr_0_0= ruleCalcCR )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:784:1: (lv_cr_0_0= ruleCalcCR )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:785:3: lv_cr_0_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getCallableAccess().getCrCalcCRParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleCallable1491);
                    lv_cr_0_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCallableRule());
                    	        }
                           		set(
                           			current, 
                           			"cr",
                            		lv_cr_0_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:802:6: ( (lv_mean_1_0= ruleCalcMean ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:802:6: ( (lv_mean_1_0= ruleCalcMean ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:803:1: (lv_mean_1_0= ruleCalcMean )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:803:1: (lv_mean_1_0= ruleCalcMean )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:804:3: lv_mean_1_0= ruleCalcMean
                    {
                     
                    	        newCompositeNode(grammarAccess.getCallableAccess().getMeanCalcMeanParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcMean_in_ruleCallable1518);
                    lv_mean_1_0=ruleCalcMean();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCallableRule());
                    	        }
                           		set(
                           			current, 
                           			"mean",
                            		lv_mean_1_0, 
                            		"CalcMean");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:821:6: ( (lv_highest_2_0= ruleHighestCR ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:821:6: ( (lv_highest_2_0= ruleHighestCR ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:822:1: (lv_highest_2_0= ruleHighestCR )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:822:1: (lv_highest_2_0= ruleHighestCR )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:823:3: lv_highest_2_0= ruleHighestCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getCallableAccess().getHighestHighestCRParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleHighestCR_in_ruleCallable1545);
                    lv_highest_2_0=ruleHighestCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCallableRule());
                    	        }
                           		set(
                           			current, 
                           			"highest",
                            		lv_highest_2_0, 
                            		"HighestCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:840:6: ( (lv_similar_3_0= ruleFindSimilar ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:840:6: ( (lv_similar_3_0= ruleFindSimilar ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:841:1: (lv_similar_3_0= ruleFindSimilar )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:841:1: (lv_similar_3_0= ruleFindSimilar )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:842:3: lv_similar_3_0= ruleFindSimilar
                    {
                     
                    	        newCompositeNode(grammarAccess.getCallableAccess().getSimilarFindSimilarParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFindSimilar_in_ruleCallable1572);
                    lv_similar_3_0=ruleFindSimilar();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCallableRule());
                    	        }
                           		set(
                           			current, 
                           			"similar",
                            		lv_similar_3_0, 
                            		"FindSimilar");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 5 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:859:6: ( (lv_method_4_0= ruleMethod ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:859:6: ( (lv_method_4_0= ruleMethod ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:860:1: (lv_method_4_0= ruleMethod )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:860:1: (lv_method_4_0= ruleMethod )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:861:3: lv_method_4_0= ruleMethod
                    {
                     
                    	        newCompositeNode(grammarAccess.getCallableAccess().getMethodMethodParserRuleCall_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleMethod_in_ruleCallable1599);
                    lv_method_4_0=ruleMethod();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCallableRule());
                    	        }
                           		set(
                           			current, 
                           			"method",
                            		lv_method_4_0, 
                            		"Method");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCallable"


    // $ANTLR start "entryRuleCalcCR"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:885:1: entryRuleCalcCR returns [EObject current=null] : iv_ruleCalcCR= ruleCalcCR EOF ;
    public final EObject entryRuleCalcCR() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCalcCR = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:886:2: (iv_ruleCalcCR= ruleCalcCR EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:887:2: iv_ruleCalcCR= ruleCalcCR EOF
            {
             newCompositeNode(grammarAccess.getCalcCRRule()); 
            pushFollow(FOLLOW_ruleCalcCR_in_entryRuleCalcCR1635);
            iv_ruleCalcCR=ruleCalcCR();

            state._fsp--;

             current =iv_ruleCalcCR; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCalcCR1645); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCalcCR"


    // $ANTLR start "ruleCalcCR"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:894:1: ruleCalcCR returns [EObject current=null] : (otherlv_0= 'calcCR' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) (otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) ) )? otherlv_5= ')' ) ;
    public final EObject ruleCalcCR() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_arg1_2_0 = null;

        EObject lv_arg2_4_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:897:28: ( (otherlv_0= 'calcCR' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) (otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) ) )? otherlv_5= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:898:1: (otherlv_0= 'calcCR' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) (otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) ) )? otherlv_5= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:898:1: (otherlv_0= 'calcCR' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) (otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) ) )? otherlv_5= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:898:3: otherlv_0= 'calcCR' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) (otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) ) )? otherlv_5= ')'
            {
            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleCalcCR1682); 

                	newLeafNode(otherlv_0, grammarAccess.getCalcCRAccess().getCalcCRKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleCalcCR1694); 

                	newLeafNode(otherlv_1, grammarAccess.getCalcCRAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:906:1: ( (lv_arg1_2_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:907:1: (lv_arg1_2_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:907:1: (lv_arg1_2_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:908:3: lv_arg1_2_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getCalcCRAccess().getArg1IndexedVariableParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleCalcCR1715);
            lv_arg1_2_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCalcCRRule());
            	        }
                   		set(
                   			current, 
                   			"arg1",
                    		lv_arg1_2_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:924:2: (otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==15) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:924:4: otherlv_3= ',' ( (lv_arg2_4_0= ruleIndexedVariable ) )
                    {
                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleCalcCR1728); 

                        	newLeafNode(otherlv_3, grammarAccess.getCalcCRAccess().getCommaKeyword_3_0());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:928:1: ( (lv_arg2_4_0= ruleIndexedVariable ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:929:1: (lv_arg2_4_0= ruleIndexedVariable )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:929:1: (lv_arg2_4_0= ruleIndexedVariable )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:930:3: lv_arg2_4_0= ruleIndexedVariable
                    {
                     
                    	        newCompositeNode(grammarAccess.getCalcCRAccess().getArg2IndexedVariableParserRuleCall_3_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleIndexedVariable_in_ruleCalcCR1749);
                    lv_arg2_4_0=ruleIndexedVariable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCalcCRRule());
                    	        }
                           		set(
                           			current, 
                           			"arg2",
                            		lv_arg2_4_0, 
                            		"IndexedVariable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,16,FOLLOW_16_in_ruleCalcCR1763); 

                	newLeafNode(otherlv_5, grammarAccess.getCalcCRAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCalcCR"


    // $ANTLR start "entryRuleCalcMean"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:958:1: entryRuleCalcMean returns [EObject current=null] : iv_ruleCalcMean= ruleCalcMean EOF ;
    public final EObject entryRuleCalcMean() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCalcMean = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:959:2: (iv_ruleCalcMean= ruleCalcMean EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:960:2: iv_ruleCalcMean= ruleCalcMean EOF
            {
             newCompositeNode(grammarAccess.getCalcMeanRule()); 
            pushFollow(FOLLOW_ruleCalcMean_in_entryRuleCalcMean1799);
            iv_ruleCalcMean=ruleCalcMean();

            state._fsp--;

             current =iv_ruleCalcMean; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCalcMean1809); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCalcMean"


    // $ANTLR start "ruleCalcMean"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:967:1: ruleCalcMean returns [EObject current=null] : (otherlv_0= 'calcMean' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' ) ;
    public final EObject ruleCalcMean() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_arg_2_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:970:28: ( (otherlv_0= 'calcMean' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:971:1: (otherlv_0= 'calcMean' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:971:1: (otherlv_0= 'calcMean' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:971:3: otherlv_0= 'calcMean' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleCalcMean1846); 

                	newLeafNode(otherlv_0, grammarAccess.getCalcMeanAccess().getCalcMeanKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleCalcMean1858); 

                	newLeafNode(otherlv_1, grammarAccess.getCalcMeanAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:979:1: ( (lv_arg_2_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:980:1: (lv_arg_2_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:980:1: (lv_arg_2_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:981:3: lv_arg_2_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getCalcMeanAccess().getArgIndexedVariableParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleCalcMean1879);
            lv_arg_2_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCalcMeanRule());
            	        }
                   		set(
                   			current, 
                   			"arg",
                    		lv_arg_2_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,16,FOLLOW_16_in_ruleCalcMean1891); 

                	newLeafNode(otherlv_3, grammarAccess.getCalcMeanAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCalcMean"


    // $ANTLR start "entryRuleHighestCR"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1009:1: entryRuleHighestCR returns [EObject current=null] : iv_ruleHighestCR= ruleHighestCR EOF ;
    public final EObject entryRuleHighestCR() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHighestCR = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1010:2: (iv_ruleHighestCR= ruleHighestCR EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1011:2: iv_ruleHighestCR= ruleHighestCR EOF
            {
             newCompositeNode(grammarAccess.getHighestCRRule()); 
            pushFollow(FOLLOW_ruleHighestCR_in_entryRuleHighestCR1927);
            iv_ruleHighestCR=ruleHighestCR();

            state._fsp--;

             current =iv_ruleHighestCR; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHighestCR1937); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHighestCR"


    // $ANTLR start "ruleHighestCR"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1018:1: ruleHighestCR returns [EObject current=null] : (otherlv_0= 'highestCR' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' ) ;
    public final EObject ruleHighestCR() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_arg_2_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1021:28: ( (otherlv_0= 'highestCR' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1022:1: (otherlv_0= 'highestCR' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1022:1: (otherlv_0= 'highestCR' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1022:3: otherlv_0= 'highestCR' otherlv_1= '(' ( (lv_arg_2_0= ruleIndexedVariable ) ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleHighestCR1974); 

                	newLeafNode(otherlv_0, grammarAccess.getHighestCRAccess().getHighestCRKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleHighestCR1986); 

                	newLeafNode(otherlv_1, grammarAccess.getHighestCRAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1030:1: ( (lv_arg_2_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1031:1: (lv_arg_2_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1031:1: (lv_arg_2_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1032:3: lv_arg_2_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getHighestCRAccess().getArgIndexedVariableParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleHighestCR2007);
            lv_arg_2_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getHighestCRRule());
            	        }
                   		set(
                   			current, 
                   			"arg",
                    		lv_arg_2_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,16,FOLLOW_16_in_ruleHighestCR2019); 

                	newLeafNode(otherlv_3, grammarAccess.getHighestCRAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHighestCR"


    // $ANTLR start "entryRuleFindSimilar"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1060:1: entryRuleFindSimilar returns [EObject current=null] : iv_ruleFindSimilar= ruleFindSimilar EOF ;
    public final EObject entryRuleFindSimilar() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFindSimilar = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1061:2: (iv_ruleFindSimilar= ruleFindSimilar EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1062:2: iv_ruleFindSimilar= ruleFindSimilar EOF
            {
             newCompositeNode(grammarAccess.getFindSimilarRule()); 
            pushFollow(FOLLOW_ruleFindSimilar_in_entryRuleFindSimilar2055);
            iv_ruleFindSimilar=ruleFindSimilar();

            state._fsp--;

             current =iv_ruleFindSimilar; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFindSimilar2065); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFindSimilar"


    // $ANTLR start "ruleFindSimilar"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1069:1: ruleFindSimilar returns [EObject current=null] : (otherlv_0= 'findSimilar' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) otherlv_3= ',' ( (lv_arg2_4_0= ruleNumericFunctionExpression ) ) otherlv_5= ',' ( (lv_arg3_6_0= ruleNumericFunctionExpression ) ) otherlv_7= ')' ) ;
    public final EObject ruleFindSimilar() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_arg1_2_0 = null;

        EObject lv_arg2_4_0 = null;

        EObject lv_arg3_6_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1072:28: ( (otherlv_0= 'findSimilar' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) otherlv_3= ',' ( (lv_arg2_4_0= ruleNumericFunctionExpression ) ) otherlv_5= ',' ( (lv_arg3_6_0= ruleNumericFunctionExpression ) ) otherlv_7= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1073:1: (otherlv_0= 'findSimilar' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) otherlv_3= ',' ( (lv_arg2_4_0= ruleNumericFunctionExpression ) ) otherlv_5= ',' ( (lv_arg3_6_0= ruleNumericFunctionExpression ) ) otherlv_7= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1073:1: (otherlv_0= 'findSimilar' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) otherlv_3= ',' ( (lv_arg2_4_0= ruleNumericFunctionExpression ) ) otherlv_5= ',' ( (lv_arg3_6_0= ruleNumericFunctionExpression ) ) otherlv_7= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1073:3: otherlv_0= 'findSimilar' otherlv_1= '(' ( (lv_arg1_2_0= ruleIndexedVariable ) ) otherlv_3= ',' ( (lv_arg2_4_0= ruleNumericFunctionExpression ) ) otherlv_5= ',' ( (lv_arg3_6_0= ruleNumericFunctionExpression ) ) otherlv_7= ')'
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleFindSimilar2102); 

                	newLeafNode(otherlv_0, grammarAccess.getFindSimilarAccess().getFindSimilarKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleFindSimilar2114); 

                	newLeafNode(otherlv_1, grammarAccess.getFindSimilarAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1081:1: ( (lv_arg1_2_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1082:1: (lv_arg1_2_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1082:1: (lv_arg1_2_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1083:3: lv_arg1_2_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getFindSimilarAccess().getArg1IndexedVariableParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleFindSimilar2135);
            lv_arg1_2_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
            	        }
                   		set(
                   			current, 
                   			"arg1",
                    		lv_arg1_2_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleFindSimilar2147); 

                	newLeafNode(otherlv_3, grammarAccess.getFindSimilarAccess().getCommaKeyword_3());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1103:1: ( (lv_arg2_4_0= ruleNumericFunctionExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1104:1: (lv_arg2_4_0= ruleNumericFunctionExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1104:1: (lv_arg2_4_0= ruleNumericFunctionExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1105:3: lv_arg2_4_0= ruleNumericFunctionExpression
            {
             
            	        newCompositeNode(grammarAccess.getFindSimilarAccess().getArg2NumericFunctionExpressionParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleFindSimilar2168);
            lv_arg2_4_0=ruleNumericFunctionExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
            	        }
                   		set(
                   			current, 
                   			"arg2",
                    		lv_arg2_4_0, 
                    		"NumericFunctionExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleFindSimilar2180); 

                	newLeafNode(otherlv_5, grammarAccess.getFindSimilarAccess().getCommaKeyword_5());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1125:1: ( (lv_arg3_6_0= ruleNumericFunctionExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1126:1: (lv_arg3_6_0= ruleNumericFunctionExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1126:1: (lv_arg3_6_0= ruleNumericFunctionExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1127:3: lv_arg3_6_0= ruleNumericFunctionExpression
            {
             
            	        newCompositeNode(grammarAccess.getFindSimilarAccess().getArg3NumericFunctionExpressionParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleFindSimilar2201);
            lv_arg3_6_0=ruleNumericFunctionExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
            	        }
                   		set(
                   			current, 
                   			"arg3",
                    		lv_arg3_6_0, 
                    		"NumericFunctionExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_7=(Token)match(input,16,FOLLOW_16_in_ruleFindSimilar2213); 

                	newLeafNode(otherlv_7, grammarAccess.getFindSimilarAccess().getRightParenthesisKeyword_7());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFindSimilar"


    // $ANTLR start "entryRuleIntegerExpression"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1155:1: entryRuleIntegerExpression returns [EObject current=null] : iv_ruleIntegerExpression= ruleIntegerExpression EOF ;
    public final EObject entryRuleIntegerExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerExpression = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1156:2: (iv_ruleIntegerExpression= ruleIntegerExpression EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1157:2: iv_ruleIntegerExpression= ruleIntegerExpression EOF
            {
             newCompositeNode(grammarAccess.getIntegerExpressionRule()); 
            pushFollow(FOLLOW_ruleIntegerExpression_in_entryRuleIntegerExpression2249);
            iv_ruleIntegerExpression=ruleIntegerExpression();

            state._fsp--;

             current =iv_ruleIntegerExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerExpression2259); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntegerExpression"


    // $ANTLR start "ruleIntegerExpression"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1164:1: ruleIntegerExpression returns [EObject current=null] : ( ( (lv_int_0_0= RULE_INT ) ) | ( (otherlv_1= RULE_ID ) ) ) ;
    public final EObject ruleIntegerExpression() throws RecognitionException {
        EObject current = null;

        Token lv_int_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1167:28: ( ( ( (lv_int_0_0= RULE_INT ) ) | ( (otherlv_1= RULE_ID ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1168:1: ( ( (lv_int_0_0= RULE_INT ) ) | ( (otherlv_1= RULE_ID ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1168:1: ( ( (lv_int_0_0= RULE_INT ) ) | ( (otherlv_1= RULE_ID ) ) )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==RULE_INT) ) {
                alt11=1;
            }
            else if ( (LA11_0==RULE_ID) ) {
                alt11=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1168:2: ( (lv_int_0_0= RULE_INT ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1168:2: ( (lv_int_0_0= RULE_INT ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1169:1: (lv_int_0_0= RULE_INT )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1169:1: (lv_int_0_0= RULE_INT )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1170:3: lv_int_0_0= RULE_INT
                    {
                    lv_int_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIntegerExpression2301); 

                    			newLeafNode(lv_int_0_0, grammarAccess.getIntegerExpressionAccess().getIntINTTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"int",
                            		lv_int_0_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1187:6: ( (otherlv_1= RULE_ID ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1187:6: ( (otherlv_1= RULE_ID ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1188:1: (otherlv_1= RULE_ID )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1188:1: (otherlv_1= RULE_ID )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1189:3: otherlv_1= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerExpressionRule());
                    	        }
                            
                    otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIntegerExpression2332); 

                    		newLeafNode(otherlv_1, grammarAccess.getIntegerExpressionAccess().getVariableVariableCrossReference_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntegerExpression"


    // $ANTLR start "entryRuleNumericFunctionExpression"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1208:1: entryRuleNumericFunctionExpression returns [EObject current=null] : iv_ruleNumericFunctionExpression= ruleNumericFunctionExpression EOF ;
    public final EObject entryRuleNumericFunctionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumericFunctionExpression = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1209:2: (iv_ruleNumericFunctionExpression= ruleNumericFunctionExpression EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1210:2: iv_ruleNumericFunctionExpression= ruleNumericFunctionExpression EOF
            {
             newCompositeNode(grammarAccess.getNumericFunctionExpressionRule()); 
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_entryRuleNumericFunctionExpression2368);
            iv_ruleNumericFunctionExpression=ruleNumericFunctionExpression();

            state._fsp--;

             current =iv_ruleNumericFunctionExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumericFunctionExpression2378); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumericFunctionExpression"


    // $ANTLR start "ruleNumericFunctionExpression"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1217:1: ruleNumericFunctionExpression returns [EObject current=null] : ( ( (lv_int_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_indexedVariable_2_0= ruleIndexedVariable ) ) | ( (lv_callable_3_0= ruleCallable ) ) ) ;
    public final EObject ruleNumericFunctionExpression() throws RecognitionException {
        EObject current = null;

        Token lv_int_0_0=null;
        Token lv_double_1_0=null;
        EObject lv_indexedVariable_2_0 = null;

        EObject lv_callable_3_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1220:28: ( ( ( (lv_int_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_indexedVariable_2_0= ruleIndexedVariable ) ) | ( (lv_callable_3_0= ruleCallable ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1221:1: ( ( (lv_int_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_indexedVariable_2_0= ruleIndexedVariable ) ) | ( (lv_callable_3_0= ruleCallable ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1221:1: ( ( (lv_int_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_indexedVariable_2_0= ruleIndexedVariable ) ) | ( (lv_callable_3_0= ruleCallable ) ) )
            int alt12=4;
            alt12 = dfa12.predict(input);
            switch (alt12) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1221:2: ( (lv_int_0_0= RULE_INT ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1221:2: ( (lv_int_0_0= RULE_INT ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1222:1: (lv_int_0_0= RULE_INT )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1222:1: (lv_int_0_0= RULE_INT )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1223:3: lv_int_0_0= RULE_INT
                    {
                    lv_int_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNumericFunctionExpression2420); 

                    			newLeafNode(lv_int_0_0, grammarAccess.getNumericFunctionExpressionAccess().getIntINTTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNumericFunctionExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"int",
                            		lv_int_0_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1240:6: ( (lv_double_1_0= RULE_FLOAT ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1240:6: ( (lv_double_1_0= RULE_FLOAT ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1241:1: (lv_double_1_0= RULE_FLOAT )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1241:1: (lv_double_1_0= RULE_FLOAT )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1242:3: lv_double_1_0= RULE_FLOAT
                    {
                    lv_double_1_0=(Token)match(input,RULE_FLOAT,FOLLOW_RULE_FLOAT_in_ruleNumericFunctionExpression2448); 

                    			newLeafNode(lv_double_1_0, grammarAccess.getNumericFunctionExpressionAccess().getDoubleFLOATTerminalRuleCall_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNumericFunctionExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"double",
                            		lv_double_1_0, 
                            		"FLOAT");
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1259:6: ( (lv_indexedVariable_2_0= ruleIndexedVariable ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1259:6: ( (lv_indexedVariable_2_0= ruleIndexedVariable ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1260:1: (lv_indexedVariable_2_0= ruleIndexedVariable )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1260:1: (lv_indexedVariable_2_0= ruleIndexedVariable )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1261:3: lv_indexedVariable_2_0= ruleIndexedVariable
                    {
                     
                    	        newCompositeNode(grammarAccess.getNumericFunctionExpressionAccess().getIndexedVariableIndexedVariableParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleIndexedVariable_in_ruleNumericFunctionExpression2480);
                    lv_indexedVariable_2_0=ruleIndexedVariable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNumericFunctionExpressionRule());
                    	        }
                           		set(
                           			current, 
                           			"indexedVariable",
                            		lv_indexedVariable_2_0, 
                            		"IndexedVariable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1278:6: ( (lv_callable_3_0= ruleCallable ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1278:6: ( (lv_callable_3_0= ruleCallable ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1279:1: (lv_callable_3_0= ruleCallable )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1279:1: (lv_callable_3_0= ruleCallable )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1280:3: lv_callable_3_0= ruleCallable
                    {
                     
                    	        newCompositeNode(grammarAccess.getNumericFunctionExpressionAccess().getCallableCallableParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCallable_in_ruleNumericFunctionExpression2507);
                    lv_callable_3_0=ruleCallable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNumericFunctionExpressionRule());
                    	        }
                           		set(
                           			current, 
                           			"callable",
                            		lv_callable_3_0, 
                            		"Callable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumericFunctionExpression"


    // $ANTLR start "entryRuleMethod"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1304:1: entryRuleMethod returns [EObject current=null] : iv_ruleMethod= ruleMethod EOF ;
    public final EObject entryRuleMethod() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMethod = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1305:2: (iv_ruleMethod= ruleMethod EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1306:2: iv_ruleMethod= ruleMethod EOF
            {
             newCompositeNode(grammarAccess.getMethodRule()); 
            pushFollow(FOLLOW_ruleMethod_in_entryRuleMethod2543);
            iv_ruleMethod=ruleMethod();

            state._fsp--;

             current =iv_ruleMethod; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMethod2553); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMethod"


    // $ANTLR start "ruleMethod"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1313:1: ruleMethod returns [EObject current=null] : ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) ) ;
    public final EObject ruleMethod() throws RecognitionException {
        EObject current = null;

        EObject lv_size_0_0 = null;

        EObject lv_add_1_0 = null;

        EObject lv_delete_2_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1316:28: ( ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1317:1: ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1317:1: ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) )
            int alt13=3;
            alt13 = dfa13.predict(input);
            switch (alt13) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1317:2: ( (lv_size_0_0= ruleSize ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1317:2: ( (lv_size_0_0= ruleSize ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1318:1: (lv_size_0_0= ruleSize )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1318:1: (lv_size_0_0= ruleSize )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1319:3: lv_size_0_0= ruleSize
                    {
                     
                    	        newCompositeNode(grammarAccess.getMethodAccess().getSizeSizeParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSize_in_ruleMethod2599);
                    lv_size_0_0=ruleSize();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMethodRule());
                    	        }
                           		set(
                           			current, 
                           			"size",
                            		lv_size_0_0, 
                            		"Size");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1336:6: ( (lv_add_1_0= ruleAdd ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1336:6: ( (lv_add_1_0= ruleAdd ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1337:1: (lv_add_1_0= ruleAdd )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1337:1: (lv_add_1_0= ruleAdd )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1338:3: lv_add_1_0= ruleAdd
                    {
                     
                    	        newCompositeNode(grammarAccess.getMethodAccess().getAddAddParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAdd_in_ruleMethod2626);
                    lv_add_1_0=ruleAdd();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMethodRule());
                    	        }
                           		set(
                           			current, 
                           			"add",
                            		lv_add_1_0, 
                            		"Add");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1355:6: ( (lv_delete_2_0= ruleDelete ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1355:6: ( (lv_delete_2_0= ruleDelete ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1356:1: (lv_delete_2_0= ruleDelete )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1356:1: (lv_delete_2_0= ruleDelete )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1357:3: lv_delete_2_0= ruleDelete
                    {
                     
                    	        newCompositeNode(grammarAccess.getMethodAccess().getDeleteDeleteParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDelete_in_ruleMethod2653);
                    lv_delete_2_0=ruleDelete();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMethodRule());
                    	        }
                           		set(
                           			current, 
                           			"delete",
                            		lv_delete_2_0, 
                            		"Delete");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMethod"


    // $ANTLR start "entryRuleSize"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1381:1: entryRuleSize returns [EObject current=null] : iv_ruleSize= ruleSize EOF ;
    public final EObject entryRuleSize() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSize = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1382:2: (iv_ruleSize= ruleSize EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1383:2: iv_ruleSize= ruleSize EOF
            {
             newCompositeNode(grammarAccess.getSizeRule()); 
            pushFollow(FOLLOW_ruleSize_in_entryRuleSize2689);
            iv_ruleSize=ruleSize();

            state._fsp--;

             current =iv_ruleSize; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSize2699); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSize"


    // $ANTLR start "ruleSize"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1390:1: ruleSize returns [EObject current=null] : ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.size' otherlv_2= '(' otherlv_3= ')' ) ;
    public final EObject ruleSize() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_variable_0_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1393:28: ( ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.size' otherlv_2= '(' otherlv_3= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1394:1: ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.size' otherlv_2= '(' otherlv_3= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1394:1: ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.size' otherlv_2= '(' otherlv_3= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1394:2: ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.size' otherlv_2= '(' otherlv_3= ')'
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1394:2: ( (lv_variable_0_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1395:1: (lv_variable_0_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1395:1: (lv_variable_0_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1396:3: lv_variable_0_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getSizeAccess().getVariableIndexedVariableParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleSize2745);
            lv_variable_0_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSizeRule());
            	        }
                   		set(
                   			current, 
                   			"variable",
                    		lv_variable_0_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleSize2757); 

                	newLeafNode(otherlv_1, grammarAccess.getSizeAccess().getSizeKeyword_1());
                
            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleSize2769); 

                	newLeafNode(otherlv_2, grammarAccess.getSizeAccess().getLeftParenthesisKeyword_2());
                
            otherlv_3=(Token)match(input,16,FOLLOW_16_in_ruleSize2781); 

                	newLeafNode(otherlv_3, grammarAccess.getSizeAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSize"


    // $ANTLR start "entryRuleAdd"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1432:1: entryRuleAdd returns [EObject current=null] : iv_ruleAdd= ruleAdd EOF ;
    public final EObject entryRuleAdd() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdd = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1433:2: (iv_ruleAdd= ruleAdd EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1434:2: iv_ruleAdd= ruleAdd EOF
            {
             newCompositeNode(grammarAccess.getAddRule()); 
            pushFollow(FOLLOW_ruleAdd_in_entryRuleAdd2817);
            iv_ruleAdd=ruleAdd();

            state._fsp--;

             current =iv_ruleAdd; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAdd2827); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdd"


    // $ANTLR start "ruleAdd"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1441:1: ruleAdd returns [EObject current=null] : ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.add' otherlv_2= '(' ( (lv_args_3_0= ruleNumericFunctionExpression ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) ) )* otherlv_6= ')' ) ;
    public final EObject ruleAdd() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_variable_0_0 = null;

        EObject lv_args_3_0 = null;

        EObject lv_args_5_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1444:28: ( ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.add' otherlv_2= '(' ( (lv_args_3_0= ruleNumericFunctionExpression ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) ) )* otherlv_6= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1445:1: ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.add' otherlv_2= '(' ( (lv_args_3_0= ruleNumericFunctionExpression ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) ) )* otherlv_6= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1445:1: ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.add' otherlv_2= '(' ( (lv_args_3_0= ruleNumericFunctionExpression ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) ) )* otherlv_6= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1445:2: ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.add' otherlv_2= '(' ( (lv_args_3_0= ruleNumericFunctionExpression ) ) (otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) ) )* otherlv_6= ')'
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1445:2: ( (lv_variable_0_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1446:1: (lv_variable_0_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1446:1: (lv_variable_0_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1447:3: lv_variable_0_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getAddAccess().getVariableIndexedVariableParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleAdd2873);
            lv_variable_0_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	        }
                   		set(
                   			current, 
                   			"variable",
                    		lv_variable_0_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,22,FOLLOW_22_in_ruleAdd2885); 

                	newLeafNode(otherlv_1, grammarAccess.getAddAccess().getAddKeyword_1());
                
            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleAdd2897); 

                	newLeafNode(otherlv_2, grammarAccess.getAddAccess().getLeftParenthesisKeyword_2());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1471:1: ( (lv_args_3_0= ruleNumericFunctionExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1472:1: (lv_args_3_0= ruleNumericFunctionExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1472:1: (lv_args_3_0= ruleNumericFunctionExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1473:3: lv_args_3_0= ruleNumericFunctionExpression
            {
             
            	        newCompositeNode(grammarAccess.getAddAccess().getArgsNumericFunctionExpressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleAdd2918);
            lv_args_3_0=ruleNumericFunctionExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	        }
                   		add(
                   			current, 
                   			"args",
                    		lv_args_3_0, 
                    		"NumericFunctionExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1489:2: (otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==15) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1489:4: otherlv_4= ',' ( (lv_args_5_0= ruleNumericFunctionExpression ) )
            	    {
            	    otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleAdd2931); 

            	        	newLeafNode(otherlv_4, grammarAccess.getAddAccess().getCommaKeyword_4_0());
            	        
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1493:1: ( (lv_args_5_0= ruleNumericFunctionExpression ) )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1494:1: (lv_args_5_0= ruleNumericFunctionExpression )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1494:1: (lv_args_5_0= ruleNumericFunctionExpression )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1495:3: lv_args_5_0= ruleNumericFunctionExpression
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getAddAccess().getArgsNumericFunctionExpressionParserRuleCall_4_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleAdd2952);
            	    lv_args_5_0=ruleNumericFunctionExpression();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getAddRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"args",
            	            		lv_args_5_0, 
            	            		"NumericFunctionExpression");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            otherlv_6=(Token)match(input,16,FOLLOW_16_in_ruleAdd2966); 

                	newLeafNode(otherlv_6, grammarAccess.getAddAccess().getRightParenthesisKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdd"


    // $ANTLR start "entryRuleDelete"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1523:1: entryRuleDelete returns [EObject current=null] : iv_ruleDelete= ruleDelete EOF ;
    public final EObject entryRuleDelete() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDelete = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1524:2: (iv_ruleDelete= ruleDelete EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1525:2: iv_ruleDelete= ruleDelete EOF
            {
             newCompositeNode(grammarAccess.getDeleteRule()); 
            pushFollow(FOLLOW_ruleDelete_in_entryRuleDelete3002);
            iv_ruleDelete=ruleDelete();

            state._fsp--;

             current =iv_ruleDelete; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDelete3012); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDelete"


    // $ANTLR start "ruleDelete"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1532:1: ruleDelete returns [EObject current=null] : ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.delete' ( (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' ) | (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' ) ) ) ;
    public final EObject ruleDelete() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        EObject lv_variable_0_0 = null;

        EObject lv_function_3_0 = null;

        EObject lv_delx_7_0 = null;

        EObject lv_dely_9_0 = null;

        EObject lv_delx_13_0 = null;

        EObject lv_dely_15_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1535:28: ( ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.delete' ( (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' ) | (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1536:1: ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.delete' ( (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' ) | (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1536:1: ( ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.delete' ( (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' ) | (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1536:2: ( (lv_variable_0_0= ruleIndexedVariable ) ) otherlv_1= '.delete' ( (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' ) | (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1536:2: ( (lv_variable_0_0= ruleIndexedVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1537:1: (lv_variable_0_0= ruleIndexedVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1537:1: (lv_variable_0_0= ruleIndexedVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1538:3: lv_variable_0_0= ruleIndexedVariable
            {
             
            	        newCompositeNode(grammarAccess.getDeleteAccess().getVariableIndexedVariableParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleIndexedVariable_in_ruleDelete3058);
            lv_variable_0_0=ruleIndexedVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
            	        }
                   		set(
                   			current, 
                   			"variable",
                    		lv_variable_0_0, 
                    		"IndexedVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleDelete3070); 

                	newLeafNode(otherlv_1, grammarAccess.getDeleteAccess().getDeleteKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1558:1: ( (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' ) | (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' ) )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==14) ) {
                int LA18_1 = input.LA(2);

                if ( (LA18_1==RULE_ID||(LA18_1>=17 && LA18_1<=20)) ) {
                    alt18=1;
                }
                else if ( (LA18_1==24) ) {
                    alt18=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 18, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }
            switch (alt18) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1558:2: (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1558:2: (otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')' )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1558:4: otherlv_2= '(' ( (lv_function_3_0= ruleCallable ) ) otherlv_4= ')'
                    {
                    otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleDelete3084); 

                        	newLeafNode(otherlv_2, grammarAccess.getDeleteAccess().getLeftParenthesisKeyword_2_0_0());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1562:1: ( (lv_function_3_0= ruleCallable ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1563:1: (lv_function_3_0= ruleCallable )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1563:1: (lv_function_3_0= ruleCallable )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1564:3: lv_function_3_0= ruleCallable
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeleteAccess().getFunctionCallableParserRuleCall_2_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCallable_in_ruleDelete3105);
                    lv_function_3_0=ruleCallable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	        }
                           		set(
                           			current, 
                           			"function",
                            		lv_function_3_0, 
                            		"Callable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_4=(Token)match(input,16,FOLLOW_16_in_ruleDelete3117); 

                        	newLeafNode(otherlv_4, grammarAccess.getDeleteAccess().getRightParenthesisKeyword_2_0_2());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1585:6: (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1585:6: (otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')' )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1585:8: otherlv_5= '(' otherlv_6= '[' ( (lv_delx_7_0= ruleNumericFunctionExpression ) ) (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )? otherlv_10= ']' (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )* otherlv_17= ')'
                    {
                    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleDelete3137); 

                        	newLeafNode(otherlv_5, grammarAccess.getDeleteAccess().getLeftParenthesisKeyword_2_1_0());
                        
                    otherlv_6=(Token)match(input,24,FOLLOW_24_in_ruleDelete3149); 

                        	newLeafNode(otherlv_6, grammarAccess.getDeleteAccess().getLeftSquareBracketKeyword_2_1_1());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1593:1: ( (lv_delx_7_0= ruleNumericFunctionExpression ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1594:1: (lv_delx_7_0= ruleNumericFunctionExpression )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1594:1: (lv_delx_7_0= ruleNumericFunctionExpression )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1595:3: lv_delx_7_0= ruleNumericFunctionExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeleteAccess().getDelxNumericFunctionExpressionParserRuleCall_2_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3170);
                    lv_delx_7_0=ruleNumericFunctionExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	        }
                           		add(
                           			current, 
                           			"delx",
                            		lv_delx_7_0, 
                            		"NumericFunctionExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1611:2: (otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) ) )?
                    int alt15=2;
                    int LA15_0 = input.LA(1);

                    if ( (LA15_0==15) ) {
                        alt15=1;
                    }
                    switch (alt15) {
                        case 1 :
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1611:4: otherlv_8= ',' ( (lv_dely_9_0= ruleNumericFunctionExpression ) )
                            {
                            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleDelete3183); 

                                	newLeafNode(otherlv_8, grammarAccess.getDeleteAccess().getCommaKeyword_2_1_3_0());
                                
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1615:1: ( (lv_dely_9_0= ruleNumericFunctionExpression ) )
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1616:1: (lv_dely_9_0= ruleNumericFunctionExpression )
                            {
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1616:1: (lv_dely_9_0= ruleNumericFunctionExpression )
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1617:3: lv_dely_9_0= ruleNumericFunctionExpression
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getDelyNumericFunctionExpressionParserRuleCall_2_1_3_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3204);
                            lv_dely_9_0=ruleNumericFunctionExpression();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"dely",
                                    		lv_dely_9_0, 
                                    		"NumericFunctionExpression");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    otherlv_10=(Token)match(input,25,FOLLOW_25_in_ruleDelete3218); 

                        	newLeafNode(otherlv_10, grammarAccess.getDeleteAccess().getRightSquareBracketKeyword_2_1_4());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1637:1: (otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']' )*
                    loop17:
                    do {
                        int alt17=2;
                        int LA17_0 = input.LA(1);

                        if ( (LA17_0==15) ) {
                            alt17=1;
                        }


                        switch (alt17) {
                    	case 1 :
                    	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1637:3: otherlv_11= ',' otherlv_12= '[' ( (lv_delx_13_0= ruleNumericFunctionExpression ) ) (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )? otherlv_16= ']'
                    	    {
                    	    otherlv_11=(Token)match(input,15,FOLLOW_15_in_ruleDelete3231); 

                    	        	newLeafNode(otherlv_11, grammarAccess.getDeleteAccess().getCommaKeyword_2_1_5_0());
                    	        
                    	    otherlv_12=(Token)match(input,24,FOLLOW_24_in_ruleDelete3243); 

                    	        	newLeafNode(otherlv_12, grammarAccess.getDeleteAccess().getLeftSquareBracketKeyword_2_1_5_1());
                    	        
                    	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1645:1: ( (lv_delx_13_0= ruleNumericFunctionExpression ) )
                    	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1646:1: (lv_delx_13_0= ruleNumericFunctionExpression )
                    	    {
                    	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1646:1: (lv_delx_13_0= ruleNumericFunctionExpression )
                    	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1647:3: lv_delx_13_0= ruleNumericFunctionExpression
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getDeleteAccess().getDelxNumericFunctionExpressionParserRuleCall_2_1_5_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3264);
                    	    lv_delx_13_0=ruleNumericFunctionExpression();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"delx",
                    	            		lv_delx_13_0, 
                    	            		"NumericFunctionExpression");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1663:2: (otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) ) )?
                    	    int alt16=2;
                    	    int LA16_0 = input.LA(1);

                    	    if ( (LA16_0==15) ) {
                    	        alt16=1;
                    	    }
                    	    switch (alt16) {
                    	        case 1 :
                    	            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1663:4: otherlv_14= ',' ( (lv_dely_15_0= ruleNumericFunctionExpression ) )
                    	            {
                    	            otherlv_14=(Token)match(input,15,FOLLOW_15_in_ruleDelete3277); 

                    	                	newLeafNode(otherlv_14, grammarAccess.getDeleteAccess().getCommaKeyword_2_1_5_3_0());
                    	                
                    	            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1667:1: ( (lv_dely_15_0= ruleNumericFunctionExpression ) )
                    	            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1668:1: (lv_dely_15_0= ruleNumericFunctionExpression )
                    	            {
                    	            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1668:1: (lv_dely_15_0= ruleNumericFunctionExpression )
                    	            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1669:3: lv_dely_15_0= ruleNumericFunctionExpression
                    	            {
                    	             
                    	            	        newCompositeNode(grammarAccess.getDeleteAccess().getDelyNumericFunctionExpressionParserRuleCall_2_1_5_3_1_0()); 
                    	            	    
                    	            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3298);
                    	            lv_dely_15_0=ruleNumericFunctionExpression();

                    	            state._fsp--;


                    	            	        if (current==null) {
                    	            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	            	        }
                    	                   		add(
                    	                   			current, 
                    	                   			"dely",
                    	                    		lv_dely_15_0, 
                    	                    		"NumericFunctionExpression");
                    	            	        afterParserOrEnumRuleCall();
                    	            	    

                    	            }


                    	            }


                    	            }
                    	            break;

                    	    }

                    	    otherlv_16=(Token)match(input,25,FOLLOW_25_in_ruleDelete3312); 

                    	        	newLeafNode(otherlv_16, grammarAccess.getDeleteAccess().getRightSquareBracketKeyword_2_1_5_4());
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop17;
                        }
                    } while (true);

                    otherlv_17=(Token)match(input,16,FOLLOW_16_in_ruleDelete3326); 

                        	newLeafNode(otherlv_17, grammarAccess.getDeleteAccess().getRightParenthesisKeyword_2_1_6());
                        

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDelete"


    // $ANTLR start "entryRuleType"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1701:1: entryRuleType returns [String current=null] : iv_ruleType= ruleType EOF ;
    public final String entryRuleType() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleType = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1702:2: (iv_ruleType= ruleType EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1703:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType3365);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType3376); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1710:1: ruleType returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'Real' | kw= 'Int' | kw= 'Partition' ) ;
    public final AntlrDatatypeRuleToken ruleType() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1713:28: ( (kw= 'Real' | kw= 'Int' | kw= 'Partition' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1714:1: (kw= 'Real' | kw= 'Int' | kw= 'Partition' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1714:1: (kw= 'Real' | kw= 'Int' | kw= 'Partition' )
            int alt19=3;
            switch ( input.LA(1) ) {
            case 26:
                {
                alt19=1;
                }
                break;
            case 27:
                {
                alt19=2;
                }
                break;
            case 28:
                {
                alt19=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }

            switch (alt19) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1715:2: kw= 'Real'
                    {
                    kw=(Token)match(input,26,FOLLOW_26_in_ruleType3414); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getRealKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1722:2: kw= 'Int'
                    {
                    kw=(Token)match(input,27,FOLLOW_27_in_ruleType3433); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getIntKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1729:2: kw= 'Partition'
                    {
                    kw=(Token)match(input,28,FOLLOW_28_in_ruleType3452); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTypeAccess().getPartitionKeyword_2()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleVectorialVariable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1744:1: entryRuleVectorialVariable returns [EObject current=null] : iv_ruleVectorialVariable= ruleVectorialVariable EOF ;
    public final EObject entryRuleVectorialVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVectorialVariable = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1745:2: (iv_ruleVectorialVariable= ruleVectorialVariable EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1746:2: iv_ruleVectorialVariable= ruleVectorialVariable EOF
            {
             newCompositeNode(grammarAccess.getVectorialVariableRule()); 
            pushFollow(FOLLOW_ruleVectorialVariable_in_entryRuleVectorialVariable3494);
            iv_ruleVectorialVariable=ruleVectorialVariable();

            state._fsp--;

             current =iv_ruleVectorialVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVectorialVariable3504); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVectorialVariable"


    // $ANTLR start "ruleVectorialVariable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1753:1: ruleVectorialVariable returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleVectorialVariable() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1756:28: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1757:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1757:1: ( (lv_name_0_0= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1758:1: (lv_name_0_0= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1758:1: (lv_name_0_0= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1759:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleVectorialVariable3545); 

            			newLeafNode(lv_name_0_0, grammarAccess.getVectorialVariableAccess().getNameIDTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getVectorialVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVectorialVariable"


    // $ANTLR start "entryRuleScalarVariable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1783:1: entryRuleScalarVariable returns [EObject current=null] : iv_ruleScalarVariable= ruleScalarVariable EOF ;
    public final EObject entryRuleScalarVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScalarVariable = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1784:2: (iv_ruleScalarVariable= ruleScalarVariable EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1785:2: iv_ruleScalarVariable= ruleScalarVariable EOF
            {
             newCompositeNode(grammarAccess.getScalarVariableRule()); 
            pushFollow(FOLLOW_ruleScalarVariable_in_entryRuleScalarVariable3585);
            iv_ruleScalarVariable=ruleScalarVariable();

            state._fsp--;

             current =iv_ruleScalarVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScalarVariable3595); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleScalarVariable"


    // $ANTLR start "ruleScalarVariable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1792:1: ruleScalarVariable returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleScalarVariable() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1795:28: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1796:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1796:1: ( (lv_name_0_0= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1797:1: (lv_name_0_0= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1797:1: (lv_name_0_0= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1798:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleScalarVariable3636); 

            			newLeafNode(lv_name_0_0, grammarAccess.getScalarVariableAccess().getNameIDTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getScalarVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScalarVariable"


    // $ANTLR start "entryRuleIndexedVariable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1822:1: entryRuleIndexedVariable returns [EObject current=null] : iv_ruleIndexedVariable= ruleIndexedVariable EOF ;
    public final EObject entryRuleIndexedVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndexedVariable = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1823:2: (iv_ruleIndexedVariable= ruleIndexedVariable EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1824:2: iv_ruleIndexedVariable= ruleIndexedVariable EOF
            {
             newCompositeNode(grammarAccess.getIndexedVariableRule()); 
            pushFollow(FOLLOW_ruleIndexedVariable_in_entryRuleIndexedVariable3676);
            iv_ruleIndexedVariable=ruleIndexedVariable();

            state._fsp--;

             current =iv_ruleIndexedVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIndexedVariable3686); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndexedVariable"


    // $ANTLR start "ruleIndexedVariable"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1831:1: ruleIndexedVariable returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )? ) ;
    public final EObject ruleIndexedVariable() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_x_2_0 = null;

        EObject lv_y_4_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1834:28: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )? ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1835:1: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )? )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1835:1: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )? )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1835:2: ( (otherlv_0= RULE_ID ) ) (otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )?
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1835:2: ( (otherlv_0= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1836:1: (otherlv_0= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1836:1: (otherlv_0= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1837:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getIndexedVariableRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIndexedVariable3731); 

            		newLeafNode(otherlv_0, grammarAccess.getIndexedVariableAccess().getVariableVariableCrossReference_0_0()); 
            	

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1848:2: (otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==24) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1848:4: otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']'
                    {
                    otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleIndexedVariable3744); 

                        	newLeafNode(otherlv_1, grammarAccess.getIndexedVariableAccess().getLeftSquareBracketKeyword_1_0());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1852:1: ( (lv_x_2_0= ruleIntegerExpression ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1853:1: (lv_x_2_0= ruleIntegerExpression )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1853:1: (lv_x_2_0= ruleIntegerExpression )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1854:3: lv_x_2_0= ruleIntegerExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getIndexedVariableAccess().getXIntegerExpressionParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleIntegerExpression_in_ruleIndexedVariable3765);
                    lv_x_2_0=ruleIntegerExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getIndexedVariableRule());
                    	        }
                           		set(
                           			current, 
                           			"x",
                            		lv_x_2_0, 
                            		"IntegerExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1870:2: (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )?
                    int alt20=2;
                    int LA20_0 = input.LA(1);

                    if ( (LA20_0==15) ) {
                        alt20=1;
                    }
                    switch (alt20) {
                        case 1 :
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1870:4: otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) )
                            {
                            otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleIndexedVariable3778); 

                                	newLeafNode(otherlv_3, grammarAccess.getIndexedVariableAccess().getCommaKeyword_1_2_0());
                                
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1874:1: ( (lv_y_4_0= ruleIntegerExpression ) )
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1875:1: (lv_y_4_0= ruleIntegerExpression )
                            {
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1875:1: (lv_y_4_0= ruleIntegerExpression )
                            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1876:3: lv_y_4_0= ruleIntegerExpression
                            {
                             
                            	        newCompositeNode(grammarAccess.getIndexedVariableAccess().getYIntegerExpressionParserRuleCall_1_2_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleIntegerExpression_in_ruleIndexedVariable3799);
                            lv_y_4_0=ruleIntegerExpression();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getIndexedVariableRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"y",
                                    		lv_y_4_0, 
                                    		"IntegerExpression");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleIndexedVariable3813); 

                        	newLeafNode(otherlv_5, grammarAccess.getIndexedVariableAccess().getRightSquareBracketKeyword_1_3());
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndexedVariable"


    // $ANTLR start "entryRuleIndexedVectorial"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1904:1: entryRuleIndexedVectorial returns [EObject current=null] : iv_ruleIndexedVectorial= ruleIndexedVectorial EOF ;
    public final EObject entryRuleIndexedVectorial() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndexedVectorial = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1905:2: (iv_ruleIndexedVectorial= ruleIndexedVectorial EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1906:2: iv_ruleIndexedVectorial= ruleIndexedVectorial EOF
            {
             newCompositeNode(grammarAccess.getIndexedVectorialRule()); 
            pushFollow(FOLLOW_ruleIndexedVectorial_in_entryRuleIndexedVectorial3851);
            iv_ruleIndexedVectorial=ruleIndexedVectorial();

            state._fsp--;

             current =iv_ruleIndexedVectorial; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIndexedVectorial3861); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndexedVectorial"


    // $ANTLR start "ruleIndexedVectorial"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1913:1: ruleIndexedVectorial returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' ) ;
    public final EObject ruleIndexedVectorial() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_x_2_0 = null;

        EObject lv_y_4_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1916:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1917:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1917:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1917:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '[' ( (lv_x_2_0= ruleIntegerExpression ) ) (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )? otherlv_5= ']'
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1917:2: ( (otherlv_0= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1918:1: (otherlv_0= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1918:1: (otherlv_0= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1919:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getIndexedVectorialRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIndexedVectorial3906); 

            		newLeafNode(otherlv_0, grammarAccess.getIndexedVectorialAccess().getVariableVectorialVariableCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleIndexedVectorial3918); 

                	newLeafNode(otherlv_1, grammarAccess.getIndexedVectorialAccess().getLeftSquareBracketKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1934:1: ( (lv_x_2_0= ruleIntegerExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1935:1: (lv_x_2_0= ruleIntegerExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1935:1: (lv_x_2_0= ruleIntegerExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1936:3: lv_x_2_0= ruleIntegerExpression
            {
             
            	        newCompositeNode(grammarAccess.getIndexedVectorialAccess().getXIntegerExpressionParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleIntegerExpression_in_ruleIndexedVectorial3939);
            lv_x_2_0=ruleIntegerExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIndexedVectorialRule());
            	        }
                   		set(
                   			current, 
                   			"x",
                    		lv_x_2_0, 
                    		"IntegerExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1952:2: (otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==15) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1952:4: otherlv_3= ',' ( (lv_y_4_0= ruleIntegerExpression ) )
                    {
                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleIndexedVectorial3952); 

                        	newLeafNode(otherlv_3, grammarAccess.getIndexedVectorialAccess().getCommaKeyword_3_0());
                        
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1956:1: ( (lv_y_4_0= ruleIntegerExpression ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1957:1: (lv_y_4_0= ruleIntegerExpression )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1957:1: (lv_y_4_0= ruleIntegerExpression )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1958:3: lv_y_4_0= ruleIntegerExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getIndexedVectorialAccess().getYIntegerExpressionParserRuleCall_3_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleIntegerExpression_in_ruleIndexedVectorial3973);
                    lv_y_4_0=ruleIntegerExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getIndexedVectorialRule());
                    	        }
                           		set(
                           			current, 
                           			"y",
                            		lv_y_4_0, 
                            		"IntegerExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleIndexedVectorial3987); 

                	newLeafNode(otherlv_5, grammarAccess.getIndexedVectorialAccess().getRightSquareBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndexedVectorial"


    // $ANTLR start "entryRuleFile"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1986:1: entryRuleFile returns [EObject current=null] : iv_ruleFile= ruleFile EOF ;
    public final EObject entryRuleFile() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFile = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1987:2: (iv_ruleFile= ruleFile EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1988:2: iv_ruleFile= ruleFile EOF
            {
             newCompositeNode(grammarAccess.getFileRule()); 
            pushFollow(FOLLOW_ruleFile_in_entryRuleFile4023);
            iv_ruleFile=ruleFile();

            state._fsp--;

             current =iv_ruleFile; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFile4033); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFile"


    // $ANTLR start "ruleFile"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1995:1: ruleFile returns [EObject current=null] : ( (lv_file_0_0= RULE_STRING ) ) ;
    public final EObject ruleFile() throws RecognitionException {
        EObject current = null;

        Token lv_file_0_0=null;

         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1998:28: ( ( (lv_file_0_0= RULE_STRING ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1999:1: ( (lv_file_0_0= RULE_STRING ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:1999:1: ( (lv_file_0_0= RULE_STRING ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2000:1: (lv_file_0_0= RULE_STRING )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2000:1: (lv_file_0_0= RULE_STRING )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2001:3: lv_file_0_0= RULE_STRING
            {
            lv_file_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFile4074); 

            			newLeafNode(lv_file_0_0, grammarAccess.getFileAccess().getFileSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFileRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"file",
                    		lv_file_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFile"


    // $ANTLR start "entryRuleStringValue"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2025:1: entryRuleStringValue returns [EObject current=null] : iv_ruleStringValue= ruleStringValue EOF ;
    public final EObject entryRuleStringValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringValue = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2026:2: (iv_ruleStringValue= ruleStringValue EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2027:2: iv_ruleStringValue= ruleStringValue EOF
            {
             newCompositeNode(grammarAccess.getStringValueRule()); 
            pushFollow(FOLLOW_ruleStringValue_in_entryRuleStringValue4114);
            iv_ruleStringValue=ruleStringValue();

            state._fsp--;

             current =iv_ruleStringValue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringValue4124); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringValue"


    // $ANTLR start "ruleStringValue"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2034:1: ruleStringValue returns [EObject current=null] : ( ( (lv_stringArg_0_0= RULE_STRING ) ) | ( (lv_variableArg_1_0= ruleNumericFunctionExpression ) ) ) ;
    public final EObject ruleStringValue() throws RecognitionException {
        EObject current = null;

        Token lv_stringArg_0_0=null;
        EObject lv_variableArg_1_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2037:28: ( ( ( (lv_stringArg_0_0= RULE_STRING ) ) | ( (lv_variableArg_1_0= ruleNumericFunctionExpression ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2038:1: ( ( (lv_stringArg_0_0= RULE_STRING ) ) | ( (lv_variableArg_1_0= ruleNumericFunctionExpression ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2038:1: ( ( (lv_stringArg_0_0= RULE_STRING ) ) | ( (lv_variableArg_1_0= ruleNumericFunctionExpression ) ) )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==RULE_STRING) ) {
                alt23=1;
            }
            else if ( ((LA23_0>=RULE_INT && LA23_0<=RULE_ID)||(LA23_0>=17 && LA23_0<=20)) ) {
                alt23=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2038:2: ( (lv_stringArg_0_0= RULE_STRING ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2038:2: ( (lv_stringArg_0_0= RULE_STRING ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2039:1: (lv_stringArg_0_0= RULE_STRING )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2039:1: (lv_stringArg_0_0= RULE_STRING )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2040:3: lv_stringArg_0_0= RULE_STRING
                    {
                    lv_stringArg_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringValue4166); 

                    			newLeafNode(lv_stringArg_0_0, grammarAccess.getStringValueAccess().getStringArgSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringValueRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"stringArg",
                            		lv_stringArg_0_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2057:6: ( (lv_variableArg_1_0= ruleNumericFunctionExpression ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2057:6: ( (lv_variableArg_1_0= ruleNumericFunctionExpression ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2058:1: (lv_variableArg_1_0= ruleNumericFunctionExpression )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2058:1: (lv_variableArg_1_0= ruleNumericFunctionExpression )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2059:3: lv_variableArg_1_0= ruleNumericFunctionExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getStringValueAccess().getVariableArgNumericFunctionExpressionParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleStringValue4198);
                    lv_variableArg_1_0=ruleNumericFunctionExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStringValueRule());
                    	        }
                           		set(
                           			current, 
                           			"variableArg",
                            		lv_variableArg_1_0, 
                            		"NumericFunctionExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringValue"


    // $ANTLR start "entryRulePrint"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2083:1: entryRulePrint returns [EObject current=null] : iv_rulePrint= rulePrint EOF ;
    public final EObject entryRulePrint() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrint = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2084:2: (iv_rulePrint= rulePrint EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2085:2: iv_rulePrint= rulePrint EOF
            {
             newCompositeNode(grammarAccess.getPrintRule()); 
            pushFollow(FOLLOW_rulePrint_in_entryRulePrint4234);
            iv_rulePrint=rulePrint();

            state._fsp--;

             current =iv_rulePrint; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePrint4244); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrint"


    // $ANTLR start "rulePrint"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2092:1: rulePrint returns [EObject current=null] : (otherlv_0= 'print' otherlv_1= '(' ( (lv_args_2_0= ruleStringValue ) ) (otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) ) )* otherlv_5= ')' ) ;
    public final EObject rulePrint() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_args_2_0 = null;

        EObject lv_args_4_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2095:28: ( (otherlv_0= 'print' otherlv_1= '(' ( (lv_args_2_0= ruleStringValue ) ) (otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) ) )* otherlv_5= ')' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2096:1: (otherlv_0= 'print' otherlv_1= '(' ( (lv_args_2_0= ruleStringValue ) ) (otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) ) )* otherlv_5= ')' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2096:1: (otherlv_0= 'print' otherlv_1= '(' ( (lv_args_2_0= ruleStringValue ) ) (otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) ) )* otherlv_5= ')' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2096:3: otherlv_0= 'print' otherlv_1= '(' ( (lv_args_2_0= ruleStringValue ) ) (otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) ) )* otherlv_5= ')'
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_rulePrint4281); 

                	newLeafNode(otherlv_0, grammarAccess.getPrintAccess().getPrintKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_rulePrint4293); 

                	newLeafNode(otherlv_1, grammarAccess.getPrintAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2104:1: ( (lv_args_2_0= ruleStringValue ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2105:1: (lv_args_2_0= ruleStringValue )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2105:1: (lv_args_2_0= ruleStringValue )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2106:3: lv_args_2_0= ruleStringValue
            {
             
            	        newCompositeNode(grammarAccess.getPrintAccess().getArgsStringValueParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleStringValue_in_rulePrint4314);
            lv_args_2_0=ruleStringValue();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPrintRule());
            	        }
                   		add(
                   			current, 
                   			"args",
                    		lv_args_2_0, 
                    		"StringValue");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2122:2: (otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==15) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2122:4: otherlv_3= ',' ( (lv_args_4_0= ruleStringValue ) )
            	    {
            	    otherlv_3=(Token)match(input,15,FOLLOW_15_in_rulePrint4327); 

            	        	newLeafNode(otherlv_3, grammarAccess.getPrintAccess().getCommaKeyword_3_0());
            	        
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2126:1: ( (lv_args_4_0= ruleStringValue ) )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2127:1: (lv_args_4_0= ruleStringValue )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2127:1: (lv_args_4_0= ruleStringValue )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2128:3: lv_args_4_0= ruleStringValue
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPrintAccess().getArgsStringValueParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStringValue_in_rulePrint4348);
            	    lv_args_4_0=ruleStringValue();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPrintRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"args",
            	            		lv_args_4_0, 
            	            		"StringValue");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);

            otherlv_5=(Token)match(input,16,FOLLOW_16_in_rulePrint4362); 

                	newLeafNode(otherlv_5, grammarAccess.getPrintAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrint"


    // $ANTLR start "entryRuleFor"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2156:1: entryRuleFor returns [EObject current=null] : iv_ruleFor= ruleFor EOF ;
    public final EObject entryRuleFor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFor = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2157:2: (iv_ruleFor= ruleFor EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2158:2: iv_ruleFor= ruleFor EOF
            {
             newCompositeNode(grammarAccess.getForRule()); 
            pushFollow(FOLLOW_ruleFor_in_entryRuleFor4398);
            iv_ruleFor=ruleFor();

            state._fsp--;

             current =iv_ruleFor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFor4408); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFor"


    // $ANTLR start "ruleFor"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2165:1: ruleFor returns [EObject current=null] : ( ( (lv_java_0_0= ruleForJava ) ) | ( (lv_all_1_0= ruleForAll ) ) | ( (lv_forWhile_2_0= ruleForWhile ) ) | ( (lv_file_3_0= ruleForFile ) ) ) ;
    public final EObject ruleFor() throws RecognitionException {
        EObject current = null;

        EObject lv_java_0_0 = null;

        EObject lv_all_1_0 = null;

        EObject lv_forWhile_2_0 = null;

        EObject lv_file_3_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2168:28: ( ( ( (lv_java_0_0= ruleForJava ) ) | ( (lv_all_1_0= ruleForAll ) ) | ( (lv_forWhile_2_0= ruleForWhile ) ) | ( (lv_file_3_0= ruleForFile ) ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2169:1: ( ( (lv_java_0_0= ruleForJava ) ) | ( (lv_all_1_0= ruleForAll ) ) | ( (lv_forWhile_2_0= ruleForWhile ) ) | ( (lv_file_3_0= ruleForFile ) ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2169:1: ( ( (lv_java_0_0= ruleForJava ) ) | ( (lv_all_1_0= ruleForAll ) ) | ( (lv_forWhile_2_0= ruleForWhile ) ) | ( (lv_file_3_0= ruleForFile ) ) )
            int alt25=4;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==30) ) {
                int LA25_1 = input.LA(2);

                if ( (LA25_1==14) ) {
                    int LA25_3 = input.LA(3);

                    if ( (LA25_3==43) ) {
                        alt25=4;
                    }
                    else if ( (LA25_3==RULE_ID) ) {
                        int LA25_5 = input.LA(4);

                        if ( (LA25_5==16) ) {
                            alt25=3;
                        }
                        else if ( (LA25_5==12) ) {
                            alt25=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 25, 5, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 25, 3, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 25, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA25_0==42) ) {
                alt25=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;
            }
            switch (alt25) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2169:2: ( (lv_java_0_0= ruleForJava ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2169:2: ( (lv_java_0_0= ruleForJava ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2170:1: (lv_java_0_0= ruleForJava )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2170:1: (lv_java_0_0= ruleForJava )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2171:3: lv_java_0_0= ruleForJava
                    {
                     
                    	        newCompositeNode(grammarAccess.getForAccess().getJavaForJavaParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleForJava_in_ruleFor4454);
                    lv_java_0_0=ruleForJava();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	        }
                           		set(
                           			current, 
                           			"java",
                            		lv_java_0_0, 
                            		"ForJava");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2188:6: ( (lv_all_1_0= ruleForAll ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2188:6: ( (lv_all_1_0= ruleForAll ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2189:1: (lv_all_1_0= ruleForAll )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2189:1: (lv_all_1_0= ruleForAll )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2190:3: lv_all_1_0= ruleForAll
                    {
                     
                    	        newCompositeNode(grammarAccess.getForAccess().getAllForAllParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleForAll_in_ruleFor4481);
                    lv_all_1_0=ruleForAll();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	        }
                           		set(
                           			current, 
                           			"all",
                            		lv_all_1_0, 
                            		"ForAll");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2207:6: ( (lv_forWhile_2_0= ruleForWhile ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2207:6: ( (lv_forWhile_2_0= ruleForWhile ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2208:1: (lv_forWhile_2_0= ruleForWhile )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2208:1: (lv_forWhile_2_0= ruleForWhile )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2209:3: lv_forWhile_2_0= ruleForWhile
                    {
                     
                    	        newCompositeNode(grammarAccess.getForAccess().getForWhileForWhileParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleForWhile_in_ruleFor4508);
                    lv_forWhile_2_0=ruleForWhile();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	        }
                           		set(
                           			current, 
                           			"forWhile",
                            		lv_forWhile_2_0, 
                            		"ForWhile");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2226:6: ( (lv_file_3_0= ruleForFile ) )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2226:6: ( (lv_file_3_0= ruleForFile ) )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2227:1: (lv_file_3_0= ruleForFile )
                    {
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2227:1: (lv_file_3_0= ruleForFile )
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2228:3: lv_file_3_0= ruleForFile
                    {
                     
                    	        newCompositeNode(grammarAccess.getForAccess().getFileForFileParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleForFile_in_ruleFor4535);
                    lv_file_3_0=ruleForFile();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	        }
                           		set(
                           			current, 
                           			"file",
                            		lv_file_3_0, 
                            		"ForFile");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFor"


    // $ANTLR start "entryRuleForJava"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2252:1: entryRuleForJava returns [EObject current=null] : iv_ruleForJava= ruleForJava EOF ;
    public final EObject entryRuleForJava() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForJava = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2253:2: (iv_ruleForJava= ruleForJava EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2254:2: iv_ruleForJava= ruleForJava EOF
            {
             newCompositeNode(grammarAccess.getForJavaRule()); 
            pushFollow(FOLLOW_ruleForJava_in_entryRuleForJava4571);
            iv_ruleForJava=ruleForJava();

            state._fsp--;

             current =iv_ruleForJava; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleForJava4581); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForJava"


    // $ANTLR start "ruleForJava"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2261:1: ruleForJava returns [EObject current=null] : (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= '=' ( (lv_assignment_4_0= ruleAssignmentRightHand ) ) otherlv_5= ';' ( (otherlv_6= RULE_ID ) ) ( ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) ) ) ( (lv_expression_8_0= ruleNumericFunctionExpression ) ) otherlv_9= ';' ( (otherlv_10= RULE_ID ) ) ( ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) ) ) ( (lv_step_12_0= RULE_INT ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_statements_15_0= ruleStatement ) )* otherlv_16= '}' ) ;
    public final EObject ruleForJava() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_comparison_7_1=null;
        Token lv_comparison_7_2=null;
        Token lv_comparison_7_3=null;
        Token lv_comparison_7_4=null;
        Token lv_comparison_7_5=null;
        Token lv_comparison_7_6=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token lv_operation_11_1=null;
        Token lv_operation_11_2=null;
        Token lv_step_12_0=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        EObject lv_assignment_4_0 = null;

        EObject lv_expression_8_0 = null;

        EObject lv_statements_15_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2264:28: ( (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= '=' ( (lv_assignment_4_0= ruleAssignmentRightHand ) ) otherlv_5= ';' ( (otherlv_6= RULE_ID ) ) ( ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) ) ) ( (lv_expression_8_0= ruleNumericFunctionExpression ) ) otherlv_9= ';' ( (otherlv_10= RULE_ID ) ) ( ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) ) ) ( (lv_step_12_0= RULE_INT ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_statements_15_0= ruleStatement ) )* otherlv_16= '}' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2265:1: (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= '=' ( (lv_assignment_4_0= ruleAssignmentRightHand ) ) otherlv_5= ';' ( (otherlv_6= RULE_ID ) ) ( ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) ) ) ( (lv_expression_8_0= ruleNumericFunctionExpression ) ) otherlv_9= ';' ( (otherlv_10= RULE_ID ) ) ( ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) ) ) ( (lv_step_12_0= RULE_INT ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_statements_15_0= ruleStatement ) )* otherlv_16= '}' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2265:1: (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= '=' ( (lv_assignment_4_0= ruleAssignmentRightHand ) ) otherlv_5= ';' ( (otherlv_6= RULE_ID ) ) ( ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) ) ) ( (lv_expression_8_0= ruleNumericFunctionExpression ) ) otherlv_9= ';' ( (otherlv_10= RULE_ID ) ) ( ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) ) ) ( (lv_step_12_0= RULE_INT ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_statements_15_0= ruleStatement ) )* otherlv_16= '}' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2265:3: otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= '=' ( (lv_assignment_4_0= ruleAssignmentRightHand ) ) otherlv_5= ';' ( (otherlv_6= RULE_ID ) ) ( ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) ) ) ( (lv_expression_8_0= ruleNumericFunctionExpression ) ) otherlv_9= ';' ( (otherlv_10= RULE_ID ) ) ( ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) ) ) ( (lv_step_12_0= RULE_INT ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_statements_15_0= ruleStatement ) )* otherlv_16= '}'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleForJava4618); 

                	newLeafNode(otherlv_0, grammarAccess.getForJavaAccess().getForKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleForJava4630); 

                	newLeafNode(otherlv_1, grammarAccess.getForJavaAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2273:1: ( (otherlv_2= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2274:1: (otherlv_2= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2274:1: (otherlv_2= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2275:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getForJavaRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForJava4650); 

            		newLeafNode(otherlv_2, grammarAccess.getForJavaAccess().getInitializationVariableCrossReference_2_0()); 
            	

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleForJava4662); 

                	newLeafNode(otherlv_3, grammarAccess.getForJavaAccess().getEqualsSignKeyword_3());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2290:1: ( (lv_assignment_4_0= ruleAssignmentRightHand ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2291:1: (lv_assignment_4_0= ruleAssignmentRightHand )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2291:1: (lv_assignment_4_0= ruleAssignmentRightHand )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2292:3: lv_assignment_4_0= ruleAssignmentRightHand
            {
             
            	        newCompositeNode(grammarAccess.getForJavaAccess().getAssignmentAssignmentRightHandParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleAssignmentRightHand_in_ruleForJava4683);
            lv_assignment_4_0=ruleAssignmentRightHand();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getForJavaRule());
            	        }
                   		set(
                   			current, 
                   			"assignment",
                    		lv_assignment_4_0, 
                    		"AssignmentRightHand");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_5=(Token)match(input,31,FOLLOW_31_in_ruleForJava4695); 

                	newLeafNode(otherlv_5, grammarAccess.getForJavaAccess().getSemicolonKeyword_5());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2312:1: ( (otherlv_6= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2313:1: (otherlv_6= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2313:1: (otherlv_6= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2314:3: otherlv_6= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getForJavaRule());
            	        }
                    
            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForJava4715); 

            		newLeafNode(otherlv_6, grammarAccess.getForJavaAccess().getConditionVariableCrossReference_6_0()); 
            	

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2325:2: ( ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2326:1: ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2326:1: ( (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2327:1: (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2327:1: (lv_comparison_7_1= '==' | lv_comparison_7_2= '<' | lv_comparison_7_3= '>' | lv_comparison_7_4= '<=' | lv_comparison_7_5= '>=' | lv_comparison_7_6= '!=' )
            int alt26=6;
            switch ( input.LA(1) ) {
            case 32:
                {
                alt26=1;
                }
                break;
            case 33:
                {
                alt26=2;
                }
                break;
            case 34:
                {
                alt26=3;
                }
                break;
            case 35:
                {
                alt26=4;
                }
                break;
            case 36:
                {
                alt26=5;
                }
                break;
            case 37:
                {
                alt26=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 26, 0, input);

                throw nvae;
            }

            switch (alt26) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2328:3: lv_comparison_7_1= '=='
                    {
                    lv_comparison_7_1=(Token)match(input,32,FOLLOW_32_in_ruleForJava4735); 

                            newLeafNode(lv_comparison_7_1, grammarAccess.getForJavaAccess().getComparisonEqualsSignEqualsSignKeyword_7_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "comparison", lv_comparison_7_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2340:8: lv_comparison_7_2= '<'
                    {
                    lv_comparison_7_2=(Token)match(input,33,FOLLOW_33_in_ruleForJava4764); 

                            newLeafNode(lv_comparison_7_2, grammarAccess.getForJavaAccess().getComparisonLessThanSignKeyword_7_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "comparison", lv_comparison_7_2, null);
                    	    

                    }
                    break;
                case 3 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2352:8: lv_comparison_7_3= '>'
                    {
                    lv_comparison_7_3=(Token)match(input,34,FOLLOW_34_in_ruleForJava4793); 

                            newLeafNode(lv_comparison_7_3, grammarAccess.getForJavaAccess().getComparisonGreaterThanSignKeyword_7_0_2());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "comparison", lv_comparison_7_3, null);
                    	    

                    }
                    break;
                case 4 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2364:8: lv_comparison_7_4= '<='
                    {
                    lv_comparison_7_4=(Token)match(input,35,FOLLOW_35_in_ruleForJava4822); 

                            newLeafNode(lv_comparison_7_4, grammarAccess.getForJavaAccess().getComparisonLessThanSignEqualsSignKeyword_7_0_3());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "comparison", lv_comparison_7_4, null);
                    	    

                    }
                    break;
                case 5 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2376:8: lv_comparison_7_5= '>='
                    {
                    lv_comparison_7_5=(Token)match(input,36,FOLLOW_36_in_ruleForJava4851); 

                            newLeafNode(lv_comparison_7_5, grammarAccess.getForJavaAccess().getComparisonGreaterThanSignEqualsSignKeyword_7_0_4());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "comparison", lv_comparison_7_5, null);
                    	    

                    }
                    break;
                case 6 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2388:8: lv_comparison_7_6= '!='
                    {
                    lv_comparison_7_6=(Token)match(input,37,FOLLOW_37_in_ruleForJava4880); 

                            newLeafNode(lv_comparison_7_6, grammarAccess.getForJavaAccess().getComparisonExclamationMarkEqualsSignKeyword_7_0_5());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "comparison", lv_comparison_7_6, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2403:2: ( (lv_expression_8_0= ruleNumericFunctionExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2404:1: (lv_expression_8_0= ruleNumericFunctionExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2404:1: (lv_expression_8_0= ruleNumericFunctionExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2405:3: lv_expression_8_0= ruleNumericFunctionExpression
            {
             
            	        newCompositeNode(grammarAccess.getForJavaAccess().getExpressionNumericFunctionExpressionParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleForJava4917);
            lv_expression_8_0=ruleNumericFunctionExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getForJavaRule());
            	        }
                   		set(
                   			current, 
                   			"expression",
                    		lv_expression_8_0, 
                    		"NumericFunctionExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_9=(Token)match(input,31,FOLLOW_31_in_ruleForJava4929); 

                	newLeafNode(otherlv_9, grammarAccess.getForJavaAccess().getSemicolonKeyword_9());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2425:1: ( (otherlv_10= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2426:1: (otherlv_10= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2426:1: (otherlv_10= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2427:3: otherlv_10= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getForJavaRule());
            	        }
                    
            otherlv_10=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForJava4949); 

            		newLeafNode(otherlv_10, grammarAccess.getForJavaAccess().getVariableVariableCrossReference_10_0()); 
            	

            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2438:2: ( ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2439:1: ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2439:1: ( (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2440:1: (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2440:1: (lv_operation_11_1= '+=' | lv_operation_11_2= '-=' )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==38) ) {
                alt27=1;
            }
            else if ( (LA27_0==39) ) {
                alt27=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;
            }
            switch (alt27) {
                case 1 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2441:3: lv_operation_11_1= '+='
                    {
                    lv_operation_11_1=(Token)match(input,38,FOLLOW_38_in_ruleForJava4969); 

                            newLeafNode(lv_operation_11_1, grammarAccess.getForJavaAccess().getOperationPlusSignEqualsSignKeyword_11_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "operation", lv_operation_11_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2453:8: lv_operation_11_2= '-='
                    {
                    lv_operation_11_2=(Token)match(input,39,FOLLOW_39_in_ruleForJava4998); 

                            newLeafNode(lv_operation_11_2, grammarAccess.getForJavaAccess().getOperationHyphenMinusEqualsSignKeyword_11_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForJavaRule());
                    	        }
                           		setWithLastConsumed(current, "operation", lv_operation_11_2, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2468:2: ( (lv_step_12_0= RULE_INT ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2469:1: (lv_step_12_0= RULE_INT )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2469:1: (lv_step_12_0= RULE_INT )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2470:3: lv_step_12_0= RULE_INT
            {
            lv_step_12_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleForJava5031); 

            			newLeafNode(lv_step_12_0, grammarAccess.getForJavaAccess().getStepINTTerminalRuleCall_12_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getForJavaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"step",
                    		lv_step_12_0, 
                    		"INT");
            	    

            }


            }

            otherlv_13=(Token)match(input,16,FOLLOW_16_in_ruleForJava5048); 

                	newLeafNode(otherlv_13, grammarAccess.getForJavaAccess().getRightParenthesisKeyword_13());
                
            otherlv_14=(Token)match(input,40,FOLLOW_40_in_ruleForJava5060); 

                	newLeafNode(otherlv_14, grammarAccess.getForJavaAccess().getLeftCurlyBracketKeyword_14());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2494:1: ( (lv_statements_15_0= ruleStatement ) )*
            loop28:
            do {
                int alt28=2;
                int LA28_0 = input.LA(1);

                if ( (LA28_0==RULE_ID||(LA28_0>=17 && LA28_0<=20)||(LA28_0>=29 && LA28_0<=30)||LA28_0==42) ) {
                    alt28=1;
                }


                switch (alt28) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2495:1: (lv_statements_15_0= ruleStatement )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2495:1: (lv_statements_15_0= ruleStatement )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2496:3: lv_statements_15_0= ruleStatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getForJavaAccess().getStatementsStatementParserRuleCall_15_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStatement_in_ruleForJava5081);
            	    lv_statements_15_0=ruleStatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getForJavaRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_15_0, 
            	            		"Statement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop28;
                }
            } while (true);

            otherlv_16=(Token)match(input,41,FOLLOW_41_in_ruleForJava5094); 

                	newLeafNode(otherlv_16, grammarAccess.getForJavaAccess().getRightCurlyBracketKeyword_16());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForJava"


    // $ANTLR start "entryRuleForAll"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2524:1: entryRuleForAll returns [EObject current=null] : iv_ruleForAll= ruleForAll EOF ;
    public final EObject entryRuleForAll() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForAll = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2525:2: (iv_ruleForAll= ruleForAll EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2526:2: iv_ruleForAll= ruleForAll EOF
            {
             newCompositeNode(grammarAccess.getForAllRule()); 
            pushFollow(FOLLOW_ruleForAll_in_entryRuleForAll5130);
            iv_ruleForAll=ruleForAll();

            state._fsp--;

             current =iv_ruleForAll; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleForAll5140); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForAll"


    // $ANTLR start "ruleForAll"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2533:1: ruleForAll returns [EObject current=null] : (otherlv_0= 'forall' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_start_3_0= ruleNumericFunctionExpression ) ) otherlv_4= ',' ( (lv_end_5_0= ruleNumericFunctionExpression ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' ) ;
    public final EObject ruleForAll() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        EObject lv_start_3_0 = null;

        EObject lv_end_5_0 = null;

        EObject lv_statements_8_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2536:28: ( (otherlv_0= 'forall' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_start_3_0= ruleNumericFunctionExpression ) ) otherlv_4= ',' ( (lv_end_5_0= ruleNumericFunctionExpression ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2537:1: (otherlv_0= 'forall' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_start_3_0= ruleNumericFunctionExpression ) ) otherlv_4= ',' ( (lv_end_5_0= ruleNumericFunctionExpression ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2537:1: (otherlv_0= 'forall' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_start_3_0= ruleNumericFunctionExpression ) ) otherlv_4= ',' ( (lv_end_5_0= ruleNumericFunctionExpression ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2537:3: otherlv_0= 'forall' ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( (lv_start_3_0= ruleNumericFunctionExpression ) ) otherlv_4= ',' ( (lv_end_5_0= ruleNumericFunctionExpression ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,42,FOLLOW_42_in_ruleForAll5177); 

                	newLeafNode(otherlv_0, grammarAccess.getForAllAccess().getForallKeyword_0());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2541:1: ( (otherlv_1= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2542:1: (otherlv_1= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2542:1: (otherlv_1= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2543:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getForAllRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForAll5197); 

            		newLeafNode(otherlv_1, grammarAccess.getForAllAccess().getVariableScalarVariableCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleForAll5209); 

                	newLeafNode(otherlv_2, grammarAccess.getForAllAccess().getLeftParenthesisKeyword_2());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2558:1: ( (lv_start_3_0= ruleNumericFunctionExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2559:1: (lv_start_3_0= ruleNumericFunctionExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2559:1: (lv_start_3_0= ruleNumericFunctionExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2560:3: lv_start_3_0= ruleNumericFunctionExpression
            {
             
            	        newCompositeNode(grammarAccess.getForAllAccess().getStartNumericFunctionExpressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleForAll5230);
            lv_start_3_0=ruleNumericFunctionExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getForAllRule());
            	        }
                   		set(
                   			current, 
                   			"start",
                    		lv_start_3_0, 
                    		"NumericFunctionExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleForAll5242); 

                	newLeafNode(otherlv_4, grammarAccess.getForAllAccess().getCommaKeyword_4());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2580:1: ( (lv_end_5_0= ruleNumericFunctionExpression ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2581:1: (lv_end_5_0= ruleNumericFunctionExpression )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2581:1: (lv_end_5_0= ruleNumericFunctionExpression )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2582:3: lv_end_5_0= ruleNumericFunctionExpression
            {
             
            	        newCompositeNode(grammarAccess.getForAllAccess().getEndNumericFunctionExpressionParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleNumericFunctionExpression_in_ruleForAll5263);
            lv_end_5_0=ruleNumericFunctionExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getForAllRule());
            	        }
                   		set(
                   			current, 
                   			"end",
                    		lv_end_5_0, 
                    		"NumericFunctionExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,16,FOLLOW_16_in_ruleForAll5275); 

                	newLeafNode(otherlv_6, grammarAccess.getForAllAccess().getRightParenthesisKeyword_6());
                
            otherlv_7=(Token)match(input,40,FOLLOW_40_in_ruleForAll5287); 

                	newLeafNode(otherlv_7, grammarAccess.getForAllAccess().getLeftCurlyBracketKeyword_7());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2606:1: ( (lv_statements_8_0= ruleStatement ) )*
            loop29:
            do {
                int alt29=2;
                int LA29_0 = input.LA(1);

                if ( (LA29_0==RULE_ID||(LA29_0>=17 && LA29_0<=20)||(LA29_0>=29 && LA29_0<=30)||LA29_0==42) ) {
                    alt29=1;
                }


                switch (alt29) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2607:1: (lv_statements_8_0= ruleStatement )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2607:1: (lv_statements_8_0= ruleStatement )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2608:3: lv_statements_8_0= ruleStatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getForAllAccess().getStatementsStatementParserRuleCall_8_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStatement_in_ruleForAll5308);
            	    lv_statements_8_0=ruleStatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getForAllRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_8_0, 
            	            		"Statement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop29;
                }
            } while (true);

            otherlv_9=(Token)match(input,41,FOLLOW_41_in_ruleForAll5321); 

                	newLeafNode(otherlv_9, grammarAccess.getForAllAccess().getRightCurlyBracketKeyword_9());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForAll"


    // $ANTLR start "entryRuleForWhile"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2636:1: entryRuleForWhile returns [EObject current=null] : iv_ruleForWhile= ruleForWhile EOF ;
    public final EObject entryRuleForWhile() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForWhile = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2637:2: (iv_ruleForWhile= ruleForWhile EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2638:2: iv_ruleForWhile= ruleForWhile EOF
            {
             newCompositeNode(grammarAccess.getForWhileRule()); 
            pushFollow(FOLLOW_ruleForWhile_in_entryRuleForWhile5357);
            iv_ruleForWhile=ruleForWhile();

            state._fsp--;

             current =iv_ruleForWhile; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleForWhile5367); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForWhile"


    // $ANTLR start "ruleForWhile"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2645:1: ruleForWhile returns [EObject current=null] : (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_statements_5_0= ruleStatement ) )* otherlv_6= '}' ) ;
    public final EObject ruleForWhile() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_statements_5_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2648:28: ( (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_statements_5_0= ruleStatement ) )* otherlv_6= '}' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2649:1: (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_statements_5_0= ruleStatement ) )* otherlv_6= '}' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2649:1: (otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_statements_5_0= ruleStatement ) )* otherlv_6= '}' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2649:3: otherlv_0= 'for' otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_statements_5_0= ruleStatement ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleForWhile5404); 

                	newLeafNode(otherlv_0, grammarAccess.getForWhileAccess().getForKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleForWhile5416); 

                	newLeafNode(otherlv_1, grammarAccess.getForWhileAccess().getLeftParenthesisKeyword_1());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2657:1: ( (otherlv_2= RULE_ID ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2658:1: (otherlv_2= RULE_ID )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2658:1: (otherlv_2= RULE_ID )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2659:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getForWhileRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForWhile5436); 

            		newLeafNode(otherlv_2, grammarAccess.getForWhileAccess().getVariableVectorialVariableCrossReference_2_0()); 
            	

            }


            }

            otherlv_3=(Token)match(input,16,FOLLOW_16_in_ruleForWhile5448); 

                	newLeafNode(otherlv_3, grammarAccess.getForWhileAccess().getRightParenthesisKeyword_3());
                
            otherlv_4=(Token)match(input,40,FOLLOW_40_in_ruleForWhile5460); 

                	newLeafNode(otherlv_4, grammarAccess.getForWhileAccess().getLeftCurlyBracketKeyword_4());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2678:1: ( (lv_statements_5_0= ruleStatement ) )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==RULE_ID||(LA30_0>=17 && LA30_0<=20)||(LA30_0>=29 && LA30_0<=30)||LA30_0==42) ) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2679:1: (lv_statements_5_0= ruleStatement )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2679:1: (lv_statements_5_0= ruleStatement )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2680:3: lv_statements_5_0= ruleStatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getForWhileAccess().getStatementsStatementParserRuleCall_5_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStatement_in_ruleForWhile5481);
            	    lv_statements_5_0=ruleStatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getForWhileRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_5_0, 
            	            		"Statement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);

            otherlv_6=(Token)match(input,41,FOLLOW_41_in_ruleForWhile5494); 

                	newLeafNode(otherlv_6, grammarAccess.getForWhileAccess().getRightCurlyBracketKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForWhile"


    // $ANTLR start "entryRuleForFile"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2708:1: entryRuleForFile returns [EObject current=null] : iv_ruleForFile= ruleForFile EOF ;
    public final EObject entryRuleForFile() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForFile = null;


        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2709:2: (iv_ruleForFile= ruleForFile EOF )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2710:2: iv_ruleForFile= ruleForFile EOF
            {
             newCompositeNode(grammarAccess.getForFileRule()); 
            pushFollow(FOLLOW_ruleForFile_in_entryRuleForFile5530);
            iv_ruleForFile=ruleForFile();

            state._fsp--;

             current =iv_ruleForFile; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleForFile5540); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForFile"


    // $ANTLR start "ruleForFile"
    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2717:1: ruleForFile returns [EObject current=null] : (otherlv_0= 'for' otherlv_1= '(' otherlv_2= 'file' ( (lv_name_3_0= ruleScalarVariable ) ) otherlv_4= ':' ( (lv_path_5_0= RULE_STRING ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' ) ;
    public final EObject ruleForFile() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token lv_path_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        EObject lv_name_3_0 = null;

        EObject lv_statements_8_0 = null;


         enterRule(); 
            
        try {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2720:28: ( (otherlv_0= 'for' otherlv_1= '(' otherlv_2= 'file' ( (lv_name_3_0= ruleScalarVariable ) ) otherlv_4= ':' ( (lv_path_5_0= RULE_STRING ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2721:1: (otherlv_0= 'for' otherlv_1= '(' otherlv_2= 'file' ( (lv_name_3_0= ruleScalarVariable ) ) otherlv_4= ':' ( (lv_path_5_0= RULE_STRING ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2721:1: (otherlv_0= 'for' otherlv_1= '(' otherlv_2= 'file' ( (lv_name_3_0= ruleScalarVariable ) ) otherlv_4= ':' ( (lv_path_5_0= RULE_STRING ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}' )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2721:3: otherlv_0= 'for' otherlv_1= '(' otherlv_2= 'file' ( (lv_name_3_0= ruleScalarVariable ) ) otherlv_4= ':' ( (lv_path_5_0= RULE_STRING ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_statements_8_0= ruleStatement ) )* otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleForFile5577); 

                	newLeafNode(otherlv_0, grammarAccess.getForFileAccess().getForKeyword_0());
                
            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleForFile5589); 

                	newLeafNode(otherlv_1, grammarAccess.getForFileAccess().getLeftParenthesisKeyword_1());
                
            otherlv_2=(Token)match(input,43,FOLLOW_43_in_ruleForFile5601); 

                	newLeafNode(otherlv_2, grammarAccess.getForFileAccess().getFileKeyword_2());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2733:1: ( (lv_name_3_0= ruleScalarVariable ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2734:1: (lv_name_3_0= ruleScalarVariable )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2734:1: (lv_name_3_0= ruleScalarVariable )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2735:3: lv_name_3_0= ruleScalarVariable
            {
             
            	        newCompositeNode(grammarAccess.getForFileAccess().getNameScalarVariableParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleScalarVariable_in_ruleForFile5622);
            lv_name_3_0=ruleScalarVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getForFileRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_3_0, 
                    		"ScalarVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,44,FOLLOW_44_in_ruleForFile5634); 

                	newLeafNode(otherlv_4, grammarAccess.getForFileAccess().getColonKeyword_4());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2755:1: ( (lv_path_5_0= RULE_STRING ) )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2756:1: (lv_path_5_0= RULE_STRING )
            {
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2756:1: (lv_path_5_0= RULE_STRING )
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2757:3: lv_path_5_0= RULE_STRING
            {
            lv_path_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleForFile5651); 

            			newLeafNode(lv_path_5_0, grammarAccess.getForFileAccess().getPathSTRINGTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getForFileRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"path",
                    		lv_path_5_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_6=(Token)match(input,16,FOLLOW_16_in_ruleForFile5668); 

                	newLeafNode(otherlv_6, grammarAccess.getForFileAccess().getRightParenthesisKeyword_6());
                
            otherlv_7=(Token)match(input,40,FOLLOW_40_in_ruleForFile5680); 

                	newLeafNode(otherlv_7, grammarAccess.getForFileAccess().getLeftCurlyBracketKeyword_7());
                
            // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2781:1: ( (lv_statements_8_0= ruleStatement ) )*
            loop31:
            do {
                int alt31=2;
                int LA31_0 = input.LA(1);

                if ( (LA31_0==RULE_ID||(LA31_0>=17 && LA31_0<=20)||(LA31_0>=29 && LA31_0<=30)||LA31_0==42) ) {
                    alt31=1;
                }


                switch (alt31) {
            	case 1 :
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2782:1: (lv_statements_8_0= ruleStatement )
            	    {
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2782:1: (lv_statements_8_0= ruleStatement )
            	    // ../lco.CRLanguage/src-gen/lco/parser/antlr/internal/InternalCRLanguage.g:2783:3: lv_statements_8_0= ruleStatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getForFileAccess().getStatementsStatementParserRuleCall_8_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStatement_in_ruleForFile5701);
            	    lv_statements_8_0=ruleStatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getForFileRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_8_0, 
            	            		"Statement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop31;
                }
            } while (true);

            otherlv_9=(Token)match(input,41,FOLLOW_41_in_ruleForFile5714); 

                	newLeafNode(otherlv_9, grammarAccess.getForFileAccess().getRightCurlyBracketKeyword_9());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForFile"

    // Delegated rules


    protected DFA3 dfa3 = new DFA3(this);
    protected DFA4 dfa4 = new DFA4(this);
    protected DFA12 dfa12 = new DFA12(this);
    protected DFA13 dfa13 = new DFA13(this);
    static final String DFA3_eotS =
        "\15\uffff";
    static final String DFA3_eofS =
        "\15\uffff";
    static final String DFA3_minS =
        "\1\6\1\14\3\uffff\1\4\1\uffff\2\17\1\4\1\14\2\31";
    static final String DFA3_maxS =
        "\1\52\1\30\3\uffff\1\6\1\uffff\2\31\1\6\1\27\2\31";
    static final String DFA3_acceptS =
        "\2\uffff\1\2\1\3\1\4\1\uffff\1\1\6\uffff";
    static final String DFA3_specialS =
        "\15\uffff}>";
    static final String[] DFA3_transitionS = {
            "\1\1\12\uffff\4\2\10\uffff\1\3\1\4\13\uffff\1\4",
            "\1\6\10\uffff\3\2\1\5",
            "",
            "",
            "",
            "\1\7\1\uffff\1\10",
            "",
            "\1\11\11\uffff\1\12",
            "\1\11\11\uffff\1\12",
            "\1\13\1\uffff\1\14",
            "\1\6\10\uffff\3\2",
            "\1\12",
            "\1\12"
    };

    static final short[] DFA3_eot = DFA.unpackEncodedString(DFA3_eotS);
    static final short[] DFA3_eof = DFA.unpackEncodedString(DFA3_eofS);
    static final char[] DFA3_min = DFA.unpackEncodedStringToUnsignedChars(DFA3_minS);
    static final char[] DFA3_max = DFA.unpackEncodedStringToUnsignedChars(DFA3_maxS);
    static final short[] DFA3_accept = DFA.unpackEncodedString(DFA3_acceptS);
    static final short[] DFA3_special = DFA.unpackEncodedString(DFA3_specialS);
    static final short[][] DFA3_transition;

    static {
        int numStates = DFA3_transitionS.length;
        DFA3_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA3_transition[i] = DFA.unpackEncodedString(DFA3_transitionS[i]);
        }
    }

    class DFA3 extends DFA {

        public DFA3(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 3;
            this.eot = DFA3_eot;
            this.eof = DFA3_eof;
            this.min = DFA3_min;
            this.max = DFA3_max;
            this.accept = DFA3_accept;
            this.special = DFA3_special;
            this.transition = DFA3_transition;
        }
        public String getDescription() {
            return "137:1: ( ( (lv_a_0_0= ruleAssignment ) ) | ( (lv_c_1_0= ruleCallable ) ) | ( (lv_p_2_0= rulePrint ) ) | ( (lv_f_3_0= ruleFor ) ) )";
        }
    }
    static final String DFA4_eotS =
        "\17\uffff";
    static final String DFA4_eofS =
        "\4\uffff\1\7\6\uffff\1\16\3\uffff";
    static final String DFA4_minS =
        "\1\4\3\uffff\1\6\1\uffff\1\4\1\uffff\2\17\1\4\1\6\2\31\1\uffff";
    static final String DFA4_maxS =
        "\1\24\3\uffff\1\52\1\uffff\1\6\1\uffff\2\31\1\6\1\52\2\31\1\uffff";
    static final String DFA4_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\uffff\1\6\1\uffff\1\4\6\uffff\1\5";
    static final String DFA4_specialS =
        "\17\uffff}>";
    static final String[] DFA4_transitionS = {
            "\1\1\1\2\1\4\1\3\11\uffff\4\5",
            "",
            "",
            "",
            "\1\7\6\uffff\1\7\3\uffff\4\7\3\5\1\6\1\uffff\6\7\11\uffff\2"+
            "\7",
            "",
            "\1\10\1\uffff\1\11",
            "",
            "\1\12\11\uffff\1\13",
            "\1\12\11\uffff\1\13",
            "\1\14\1\uffff\1\15",
            "\1\16\6\uffff\1\16\3\uffff\4\16\3\5\2\uffff\6\16\11\uffff\2"+
            "\16",
            "\1\13",
            "\1\13",
            ""
    };

    static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
    static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
    static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
    static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
    static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
    static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
    static final short[][] DFA4_transition;

    static {
        int numStates = DFA4_transitionS.length;
        DFA4_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
        }
    }

    class DFA4 extends DFA {

        public DFA4(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 4;
            this.eot = DFA4_eot;
            this.eof = DFA4_eof;
            this.min = DFA4_min;
            this.max = DFA4_max;
            this.accept = DFA4_accept;
            this.special = DFA4_special;
            this.transition = DFA4_transition;
        }
        public String getDescription() {
            return "233:1: ( ( (lv_integer_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_file_2_0= ruleFile ) ) | ( (otherlv_3= RULE_ID ) ) | ( (lv_indexedVectorial_4_0= ruleIndexedVectorial ) ) | ( (lv_callable_5_0= ruleCallable ) ) )";
        }
    }
    static final String DFA12_eotS =
        "\15\uffff";
    static final String DFA12_eofS =
        "\3\uffff\1\6\6\uffff\1\6\2\uffff";
    static final String DFA12_minS =
        "\1\4\2\uffff\1\17\1\uffff\1\4\1\uffff\2\17\1\4\1\17\2\31";
    static final String DFA12_maxS =
        "\1\24\2\uffff\1\37\1\uffff\1\6\1\uffff\2\31\1\6\1\37\2\31";
    static final String DFA12_acceptS =
        "\1\uffff\1\1\1\2\1\uffff\1\4\1\uffff\1\3\6\uffff";
    static final String DFA12_specialS =
        "\15\uffff}>";
    static final String[] DFA12_transitionS = {
            "\1\1\1\2\1\3\12\uffff\4\4",
            "",
            "",
            "\2\6\4\uffff\3\4\1\5\1\6\5\uffff\1\6",
            "",
            "\1\7\1\uffff\1\10",
            "",
            "\1\11\11\uffff\1\12",
            "\1\11\11\uffff\1\12",
            "\1\13\1\uffff\1\14",
            "\2\6\4\uffff\3\4\1\uffff\1\6\5\uffff\1\6",
            "\1\12",
            "\1\12"
    };

    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
    static final short[][] DFA12_transition;

    static {
        int numStates = DFA12_transitionS.length;
        DFA12_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
        }
    }

    class DFA12 extends DFA {

        public DFA12(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 12;
            this.eot = DFA12_eot;
            this.eof = DFA12_eof;
            this.min = DFA12_min;
            this.max = DFA12_max;
            this.accept = DFA12_accept;
            this.special = DFA12_special;
            this.transition = DFA12_transition;
        }
        public String getDescription() {
            return "1221:1: ( ( (lv_int_0_0= RULE_INT ) ) | ( (lv_double_1_0= RULE_FLOAT ) ) | ( (lv_indexedVariable_2_0= ruleIndexedVariable ) ) | ( (lv_callable_3_0= ruleCallable ) ) )";
        }
    }
    static final String DFA13_eotS =
        "\14\uffff";
    static final String DFA13_eofS =
        "\14\uffff";
    static final String DFA13_minS =
        "\1\6\1\25\1\4\3\uffff\2\17\1\4\1\25\2\31";
    static final String DFA13_maxS =
        "\1\6\1\30\1\6\3\uffff\2\31\1\6\1\27\2\31";
    static final String DFA13_acceptS =
        "\3\uffff\1\1\1\3\1\2\6\uffff";
    static final String DFA13_specialS =
        "\14\uffff}>";
    static final String[] DFA13_transitionS = {
            "\1\1",
            "\1\3\1\5\1\4\1\2",
            "\1\6\1\uffff\1\7",
            "",
            "",
            "",
            "\1\10\11\uffff\1\11",
            "\1\10\11\uffff\1\11",
            "\1\12\1\uffff\1\13",
            "\1\3\1\5\1\4",
            "\1\11",
            "\1\11"
    };

    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
    static final short[][] DFA13_transition;

    static {
        int numStates = DFA13_transitionS.length;
        DFA13_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
        }
    }

    class DFA13 extends DFA {

        public DFA13(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 13;
            this.eot = DFA13_eot;
            this.eof = DFA13_eof;
            this.min = DFA13_min;
            this.max = DFA13_max;
            this.accept = DFA13_accept;
            this.special = DFA13_special;
            this.transition = DFA13_transition;
        }
        public String getDescription() {
            return "1317:1: ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) )";
        }
    }
 

    public static final BitSet FOLLOW_ruleProgram_in_entryRuleProgram75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProgram85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDeclaration_in_ruleProgram131 = new BitSet(new long[]{0x000004007C1E2042L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleProgram153 = new BitSet(new long[]{0x00000400601E0042L});
    public static final BitSet FOLLOW_ruleStatement_in_entryRuleStatement190 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStatement200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignment_in_ruleStatement246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCallable_in_ruleStatement273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrint_in_ruleStatement300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFor_in_ruleStatement327 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignmentRightHand_in_entryRuleAssignmentRightHand363 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssignmentRightHand373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleAssignmentRightHand415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_FLOAT_in_ruleAssignmentRightHand443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFile_in_ruleAssignmentRightHand475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssignmentRightHand501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVectorial_in_ruleAssignmentRightHand528 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCallable_in_ruleAssignmentRightHand555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDeclaration_in_entryRuleDeclaration591 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDeclaration601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScalarDeclaration_in_ruleDeclaration647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVectorialDeclaration_in_ruleDeclaration674 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScalarDeclaration_in_entryRuleScalarDeclaration710 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScalarDeclaration720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleScalarDeclaration766 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleScalarVariable_in_ruleScalarDeclaration787 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_ruleScalarDeclaration800 = new BitSet(new long[]{0x00000000001E00F0L});
    public static final BitSet FOLLOW_ruleAssignmentRightHand_in_ruleScalarDeclaration821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVectorialDeclaration_in_entryRuleVectorialDeclaration859 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVectorialDeclaration869 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleVectorialDeclaration906 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleVectorialDeclaration918 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleVectorialDeclaration935 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_15_in_ruleVectorialDeclaration953 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleVectorialDeclaration970 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleVectorialDeclaration989 = new BitSet(new long[]{0x000000001C000000L});
    public static final BitSet FOLLOW_ruleType_in_ruleVectorialDeclaration1010 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleVectorialVariable_in_ruleVectorialDeclaration1031 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignment_in_entryRuleAssignment1067 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssignment1077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScalarAssign_in_ruleAssignment1123 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVectorialAssign_in_ruleAssignment1150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScalarAssign_in_entryRuleScalarAssign1186 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScalarAssign1196 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleScalarAssign1241 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleScalarAssign1253 = new BitSet(new long[]{0x00000000001E00F0L});
    public static final BitSet FOLLOW_ruleAssignmentRightHand_in_ruleScalarAssign1274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVectorialAssign_in_entryRuleVectorialAssign1310 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVectorialAssign1320 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVectorial_in_ruleVectorialAssign1366 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleVectorialAssign1378 = new BitSet(new long[]{0x00000000001E00F0L});
    public static final BitSet FOLLOW_ruleAssignmentRightHand_in_ruleVectorialAssign1399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCallable_in_entryRuleCallable1435 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCallable1445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleCallable1491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcMean_in_ruleCallable1518 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHighestCR_in_ruleCallable1545 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFindSimilar_in_ruleCallable1572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMethod_in_ruleCallable1599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcCR_in_entryRuleCalcCR1635 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCalcCR1645 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleCalcCR1682 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleCalcCR1694 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleCalcCR1715 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_15_in_ruleCalcCR1728 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleCalcCR1749 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleCalcCR1763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcMean_in_entryRuleCalcMean1799 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCalcMean1809 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleCalcMean1846 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleCalcMean1858 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleCalcMean1879 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleCalcMean1891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHighestCR_in_entryRuleHighestCR1927 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHighestCR1937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleHighestCR1974 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleHighestCR1986 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleHighestCR2007 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleHighestCR2019 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFindSimilar_in_entryRuleFindSimilar2055 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFindSimilar2065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleFindSimilar2102 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleFindSimilar2114 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleFindSimilar2135 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleFindSimilar2147 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleFindSimilar2168 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleFindSimilar2180 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleFindSimilar2201 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleFindSimilar2213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerExpression_in_entryRuleIntegerExpression2249 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerExpression2259 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIntegerExpression2301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIntegerExpression2332 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_entryRuleNumericFunctionExpression2368 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumericFunctionExpression2378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNumericFunctionExpression2420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_FLOAT_in_ruleNumericFunctionExpression2448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleNumericFunctionExpression2480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCallable_in_ruleNumericFunctionExpression2507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMethod_in_entryRuleMethod2543 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMethod2553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSize_in_ruleMethod2599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAdd_in_ruleMethod2626 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDelete_in_ruleMethod2653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSize_in_entryRuleSize2689 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSize2699 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleSize2745 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleSize2757 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleSize2769 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleSize2781 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAdd_in_entryRuleAdd2817 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAdd2827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleAdd2873 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleAdd2885 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleAdd2897 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleAdd2918 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_15_in_ruleAdd2931 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleAdd2952 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_16_in_ruleAdd2966 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDelete_in_entryRuleDelete3002 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDelete3012 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_ruleDelete3058 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleDelete3070 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleDelete3084 = new BitSet(new long[]{0x00000000001E0040L});
    public static final BitSet FOLLOW_ruleCallable_in_ruleDelete3105 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleDelete3117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleDelete3137 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleDelete3149 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3170 = new BitSet(new long[]{0x0000000002008000L});
    public static final BitSet FOLLOW_15_in_ruleDelete3183 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3204 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleDelete3218 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_15_in_ruleDelete3231 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleDelete3243 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3264 = new BitSet(new long[]{0x0000000002008000L});
    public static final BitSet FOLLOW_15_in_ruleDelete3277 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleDelete3298 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleDelete3312 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_16_in_ruleDelete3326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType3365 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType3376 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleType3414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleType3433 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleType3452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVectorialVariable_in_entryRuleVectorialVariable3494 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVectorialVariable3504 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleVectorialVariable3545 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScalarVariable_in_entryRuleScalarVariable3585 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScalarVariable3595 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleScalarVariable3636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVariable_in_entryRuleIndexedVariable3676 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIndexedVariable3686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIndexedVariable3731 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_ruleIndexedVariable3744 = new BitSet(new long[]{0x0000000000000050L});
    public static final BitSet FOLLOW_ruleIntegerExpression_in_ruleIndexedVariable3765 = new BitSet(new long[]{0x0000000002008000L});
    public static final BitSet FOLLOW_15_in_ruleIndexedVariable3778 = new BitSet(new long[]{0x0000000000000050L});
    public static final BitSet FOLLOW_ruleIntegerExpression_in_ruleIndexedVariable3799 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleIndexedVariable3813 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndexedVectorial_in_entryRuleIndexedVectorial3851 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIndexedVectorial3861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIndexedVectorial3906 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleIndexedVectorial3918 = new BitSet(new long[]{0x0000000000000050L});
    public static final BitSet FOLLOW_ruleIntegerExpression_in_ruleIndexedVectorial3939 = new BitSet(new long[]{0x0000000002008000L});
    public static final BitSet FOLLOW_15_in_ruleIndexedVectorial3952 = new BitSet(new long[]{0x0000000000000050L});
    public static final BitSet FOLLOW_ruleIntegerExpression_in_ruleIndexedVectorial3973 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleIndexedVectorial3987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFile_in_entryRuleFile4023 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFile4033 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFile4074 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringValue_in_entryRuleStringValue4114 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringValue4124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringValue4166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleStringValue4198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrint_in_entryRulePrint4234 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrint4244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_rulePrint4281 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rulePrint4293 = new BitSet(new long[]{0x00000000001E00F0L});
    public static final BitSet FOLLOW_ruleStringValue_in_rulePrint4314 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_15_in_rulePrint4327 = new BitSet(new long[]{0x00000000001E00F0L});
    public static final BitSet FOLLOW_ruleStringValue_in_rulePrint4348 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_16_in_rulePrint4362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFor_in_entryRuleFor4398 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFor4408 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForJava_in_ruleFor4454 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForAll_in_ruleFor4481 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForWhile_in_ruleFor4508 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForFile_in_ruleFor4535 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForJava_in_entryRuleForJava4571 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleForJava4581 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleForJava4618 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleForJava4630 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForJava4650 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleForJava4662 = new BitSet(new long[]{0x00000000001E00F0L});
    public static final BitSet FOLLOW_ruleAssignmentRightHand_in_ruleForJava4683 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleForJava4695 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForJava4715 = new BitSet(new long[]{0x0000003F00000000L});
    public static final BitSet FOLLOW_32_in_ruleForJava4735 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_33_in_ruleForJava4764 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_34_in_ruleForJava4793 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_35_in_ruleForJava4822 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_36_in_ruleForJava4851 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_37_in_ruleForJava4880 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleForJava4917 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleForJava4929 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForJava4949 = new BitSet(new long[]{0x000000C000000000L});
    public static final BitSet FOLLOW_38_in_ruleForJava4969 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_39_in_ruleForJava4998 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleForJava5031 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleForJava5048 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleForJava5060 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleForJava5081 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_41_in_ruleForJava5094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForAll_in_entryRuleForAll5130 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleForAll5140 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleForAll5177 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForAll5197 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleForAll5209 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleForAll5230 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleForAll5242 = new BitSet(new long[]{0x00000000001E0070L});
    public static final BitSet FOLLOW_ruleNumericFunctionExpression_in_ruleForAll5263 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleForAll5275 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleForAll5287 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleForAll5308 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_41_in_ruleForAll5321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForWhile_in_entryRuleForWhile5357 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleForWhile5367 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleForWhile5404 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleForWhile5416 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForWhile5436 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleForWhile5448 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleForWhile5460 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleForWhile5481 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_41_in_ruleForWhile5494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForFile_in_entryRuleForFile5530 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleForFile5540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleForFile5577 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleForFile5589 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_ruleForFile5601 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleScalarVariable_in_ruleForFile5622 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleForFile5634 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleForFile5651 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleForFile5668 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleForFile5680 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleForFile5701 = new BitSet(new long[]{0x00000600601E0040L});
    public static final BitSet FOLLOW_41_in_ruleForFile5714 = new BitSet(new long[]{0x0000000000000002L});

}